295 lines
75 KiB
JSON
Generated
295 lines
75 KiB
JSON
Generated
{
|
|
"schemaVersion": "2.0.0",
|
|
"contractName": "Forwarder",
|
|
"compilerOutput": {
|
|
"abi": [
|
|
{
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "_exchange", "type": "address" },
|
|
{ "internalType": "address", "name": "_exchangeV2", "type": "address" },
|
|
{ "internalType": "address", "name": "_weth", "type": "address" }
|
|
],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "constructor"
|
|
},
|
|
{
|
|
"anonymous": false,
|
|
"inputs": [
|
|
{ "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" },
|
|
{ "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" }
|
|
],
|
|
"name": "OwnershipTransferred",
|
|
"type": "event"
|
|
},
|
|
{ "payable": true, "stateMutability": "payable", "type": "fallback" },
|
|
{
|
|
"constant": true,
|
|
"inputs": [],
|
|
"name": "ERC1155_BATCH_RECEIVED",
|
|
"outputs": [{ "internalType": "bytes4", "name": "", "type": "bytes4" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [],
|
|
"name": "ERC1155_RECEIVED",
|
|
"outputs": [{ "internalType": "bytes4", "name": "", "type": "bytes4" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [],
|
|
"name": "EXCHANGE_V2_ORDER_ID",
|
|
"outputs": [{ "internalType": "bytes4", "name": "", "type": "bytes4" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [{ "internalType": "bytes", "name": "assetData", "type": "bytes" }],
|
|
"name": "approveMakerAssetProxy",
|
|
"outputs": [],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [
|
|
{
|
|
"components": [
|
|
{ "internalType": "address", "name": "makerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "takerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "feeRecipientAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "senderAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "makerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "makerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "salt", "type": "uint256" },
|
|
{ "internalType": "bytes", "name": "makerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes" }
|
|
],
|
|
"internalType": "struct LibOrder.Order[]",
|
|
"name": "orders",
|
|
"type": "tuple[]"
|
|
},
|
|
{ "internalType": "uint256", "name": "makerAssetBuyAmount", "type": "uint256" },
|
|
{ "internalType": "bytes[]", "name": "signatures", "type": "bytes[]" },
|
|
{ "internalType": "uint256[]", "name": "ethFeeAmounts", "type": "uint256[]" },
|
|
{ "internalType": "address payable[]", "name": "feeRecipients", "type": "address[]" }
|
|
],
|
|
"name": "marketBuyOrdersWithEth",
|
|
"outputs": [
|
|
{ "internalType": "uint256", "name": "wethSpentAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "makerAssetAcquiredAmount", "type": "uint256" }
|
|
],
|
|
"payable": true,
|
|
"stateMutability": "payable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [
|
|
{
|
|
"components": [
|
|
{ "internalType": "address", "name": "makerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "takerAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "feeRecipientAddress", "type": "address" },
|
|
{ "internalType": "address", "name": "senderAddress", "type": "address" },
|
|
{ "internalType": "uint256", "name": "makerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerAssetAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "makerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "takerFee", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "expirationTimeSeconds", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "salt", "type": "uint256" },
|
|
{ "internalType": "bytes", "name": "makerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "makerFeeAssetData", "type": "bytes" },
|
|
{ "internalType": "bytes", "name": "takerFeeAssetData", "type": "bytes" }
|
|
],
|
|
"internalType": "struct LibOrder.Order[]",
|
|
"name": "orders",
|
|
"type": "tuple[]"
|
|
},
|
|
{ "internalType": "bytes[]", "name": "signatures", "type": "bytes[]" },
|
|
{ "internalType": "uint256[]", "name": "ethFeeAmounts", "type": "uint256[]" },
|
|
{ "internalType": "address payable[]", "name": "feeRecipients", "type": "address[]" }
|
|
],
|
|
"name": "marketSellOrdersWithEth",
|
|
"outputs": [
|
|
{ "internalType": "uint256", "name": "wethSpentAmount", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "makerAssetAcquiredAmount", "type": "uint256" }
|
|
],
|
|
"payable": true,
|
|
"stateMutability": "payable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "operator", "type": "address" },
|
|
{ "internalType": "address", "name": "from", "type": "address" },
|
|
{ "internalType": "uint256[]", "name": "ids", "type": "uint256[]" },
|
|
{ "internalType": "uint256[]", "name": "values", "type": "uint256[]" },
|
|
{ "internalType": "bytes", "name": "data", "type": "bytes" }
|
|
],
|
|
"name": "onERC1155BatchReceived",
|
|
"outputs": [{ "internalType": "bytes4", "name": "", "type": "bytes4" }],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [
|
|
{ "internalType": "address", "name": "operator", "type": "address" },
|
|
{ "internalType": "address", "name": "from", "type": "address" },
|
|
{ "internalType": "uint256", "name": "id", "type": "uint256" },
|
|
{ "internalType": "uint256", "name": "value", "type": "uint256" },
|
|
{ "internalType": "bytes", "name": "data", "type": "bytes" }
|
|
],
|
|
"name": "onERC1155Received",
|
|
"outputs": [{ "internalType": "bytes4", "name": "", "type": "bytes4" }],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": true,
|
|
"inputs": [],
|
|
"name": "owner",
|
|
"outputs": [{ "internalType": "address", "name": "", "type": "address" }],
|
|
"payable": false,
|
|
"stateMutability": "view",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }],
|
|
"name": "transferOwnership",
|
|
"outputs": [],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
},
|
|
{
|
|
"constant": false,
|
|
"inputs": [
|
|
{ "internalType": "bytes", "name": "assetData", "type": "bytes" },
|
|
{ "internalType": "uint256", "name": "amount", "type": "uint256" }
|
|
],
|
|
"name": "withdrawAsset",
|
|
"outputs": [],
|
|
"payable": false,
|
|
"stateMutability": "nonpayable",
|
|
"type": "function"
|
|
}
|
|
],
|
|
"devdoc": {
|
|
"methods": {
|
|
"approveMakerAssetProxy(bytes)": {
|
|
"details": "Approves the respective proxy for a given asset to transfer tokens on the Forwarder contract's behalf. This is necessary because an order fee denominated in the maker asset (i.e. a percentage fee) is sent by the Forwarder contract to the fee recipient. This method needs to be called before forwarding orders of a maker asset that hasn't previously been approved.",
|
|
"params": { "assetData": "Byte array encoded for the respective asset proxy." }
|
|
},
|
|
"marketBuyOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],uint256,bytes[],uint256[],address[])": {
|
|
"details": "Attempt to buy makerAssetBuyAmount of makerAsset by selling ETH provided with transaction. The Forwarder may *fill* more than makerAssetBuyAmount of the makerAsset so that it can pay takerFees where takerFeeAssetData == makerAssetData (i.e. percentage fees). Any ETH not spent will be refunded to sender.",
|
|
"params": {
|
|
"ethFeeAmounts": "Amounts of ETH, denominated in Wei, that are paid to corresponding feeRecipients.",
|
|
"feeRecipients": "Addresses that will receive ETH when orders are filled.",
|
|
"makerAssetBuyAmount": "Desired amount of makerAsset to purchase.",
|
|
"orders": "Array of order specifications used containing desired makerAsset and WETH as takerAsset.",
|
|
"signatures": "Proofs that orders have been created by makers."
|
|
},
|
|
"return": "wethSpentAmount Amount of WETH spent on the given set of orders.makerAssetAcquiredAmount Amount of maker asset acquired from the given set of orders."
|
|
},
|
|
"marketSellOrdersWithEth((address,address,address,address,uint256,uint256,uint256,uint256,uint256,uint256,bytes,bytes,bytes,bytes)[],bytes[],uint256[],address[])": {
|
|
"details": "Purchases as much of orders' makerAssets as possible by selling as much of the ETH value sent as possible, accounting for order and forwarder fees.",
|
|
"params": {
|
|
"ethFeeAmounts": "Amounts of ETH, denominated in Wei, that are paid to corresponding feeRecipients.",
|
|
"feeRecipients": "Addresses that will receive ETH when orders are filled.",
|
|
"orders": "Array of order specifications used containing desired makerAsset and WETH as takerAsset.",
|
|
"signatures": "Proofs that orders have been created by makers."
|
|
},
|
|
"return": "wethSpentAmount Amount of WETH spent on the given set of orders.makerAssetAcquiredAmount Amount of maker asset acquired from the given set of orders."
|
|
},
|
|
"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)": {
|
|
"details": "The smart contract calls this function on the recipient after a `safeTransferFrom`. This function MAY throw to revert and reject the transfer. Return of other than the magic value MUST result in the transaction being reverted Note: the contract address is always the message sender",
|
|
"params": {
|
|
"data": "Additional data with no specified format",
|
|
"from": "The address which previously owned the token",
|
|
"ids": "An array containing ids of each token being transferred",
|
|
"operator": "The address which called `safeTransferFrom` function",
|
|
"values": "An array containing amounts of each token being transferred"
|
|
},
|
|
"return": "`bytes4(keccak256(\"onERC1155BatchReceived(address,address,uint256[],uint256[],bytes)\"))`"
|
|
},
|
|
"onERC1155Received(address,address,uint256,uint256,bytes)": {
|
|
"details": "The smart contract calls this function on the recipient after a `safeTransferFrom`. This function MAY throw to revert and reject the transfer. Return of other than the magic value MUST result in the transaction being reverted Note: the contract address is always the message sender",
|
|
"params": {
|
|
"data": "Additional data with no specified format",
|
|
"from": "The address which previously owned the token",
|
|
"id": "An array containing the ids of the token being transferred",
|
|
"operator": "The address which called `safeTransferFrom` function",
|
|
"value": "An array containing the amount of tokens being transferred"
|
|
},
|
|
"return": "`bytes4(keccak256(\"onERC1155Received(address,address,uint256,uint256,bytes)\"))`"
|
|
},
|
|
"transferOwnership(address)": {
|
|
"details": "Change the owner of this contract.",
|
|
"params": { "newOwner": "New owner address." }
|
|
},
|
|
"withdrawAsset(bytes,uint256)": {
|
|
"details": "Withdraws assets from this contract. It may be used by the owner to withdraw assets that were accidentally sent to this contract.",
|
|
"params": {
|
|
"amount": "Amount of the asset to withdraw.",
|
|
"assetData": "Byte array encoded for the respective asset proxy."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"evm": {
|
|
"bytecode": {
|
|
"object": "0x60806040523480156200001157600080fd5b5060405162003c9d38038062003c9d833981016040819052620000349162000472565b60008054336001600160a01b031991821617909155600180549091166001600160a01b0383161790556040518390839082908490630f47261b60e41b9062000081908390602401620004e7565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217825251620000c191600291620003a0565b50604051630c0e082160e31b81526000906001600160a01b03841690636070410890620000fa90630f47261b60e41b9060040162000514565b60206040518083038186803b1580156200011357600080fd5b505afa15801562000128573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200014e919081019062000442565b90506001600160a01b038116620001895762000189620001786200036b60201b620007b11760201c565b6200039860201b620002d81760201c565b60015460405163095ea7b360e01b81526001600160a01b039091169063095ea7b390620001bf90849060001990600401620004fb565b602060405180830381600087803b158015620001da57600080fd5b505af1158015620001ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250620002159190810190620004c5565b506000836001600160a01b031663850a15016040518163ffffffff1660e01b815260040160206040518083038186803b1580156200025257600080fd5b505afa15801562000267573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200028d919081019062000442565b90506001600160a01b038116156200032d5760015460405163095ea7b360e01b81526001600160a01b039091169063095ea7b390620002d590849060001990600401620004fb565b602060405180830381600087803b158015620002f057600080fd5b505af115801562000305573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506200032b9190810190620004c5565b505b5050600380546001600160a01b039586166001600160a01b031991821617909155600480549490951693169290921790925550620005429350505050565b6040805160048152602481019091526020810180516001600160e01b031663f3b96b8d60e01b1790525b90565b805160208201fd5b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620003e357805160ff191683800117855562000413565b8280016001018555821562000413579182015b8281111562000413578251825591602001919060010190620003f6565b506200042192915062000425565b5090565b6200039591905b808211156200042157600081556001016200042c565b60006020828403121562000454578081fd5b81516001600160a01b03811681146200046b578182fd5b9392505050565b60008060006060848603121562000487578182fd5b8351620004948162000529565b6020850151909350620004a78162000529565b6040850151909250620004ba8162000529565b809150509250925092565b600060208284031215620004d7578081fd5b815180151581146200046b578182fd5b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160e01b031991909116815260200190565b6001600160a01b03811681146200053f57600080fd5b50565b61374b80620005526000396000f3fe6080604052600436106100bc5760003560e01c8063bc197c8111610074578063f23a6e611161004e578063f23a6e61146101e4578063f2fde38b14610204578063fc67bf1c14610224576100bc565b8063bc197c811461018d578063e0a5c949146101ba578063e196001b146101cf576100bc565b80638da5cb5b116100a55780638da5cb5b1461012e578063907e5cc3146101595780639e8323151461017a576100bc565b8063442026ed146100ee578063630f1e6c1461010e575b60015473ffffffffffffffffffffffffffffffffffffffff1633146100ec576100ec6100e733610239565b6102d8565b005b3480156100fa57600080fd5b506100ec610109366004613075565b6102e0565b34801561011a57600080fd5b506100ec6101293660046130b5565b6104ca565b34801561013a57600080fd5b50610143610520565b6040516101509190613246565b60405180910390f35b61016c610167366004612e77565b61053c565b604051610150929190613623565b61016c610188366004612f13565b610597565b34801561019957600080fd5b506101ad6101a8366004612d42565b6105f3565b604051610150919061334f565b3480156101c657600080fd5b506101ad610620565b3480156101db57600080fd5b506101ad610644565b3480156101f057600080fd5b506101ad6101ff366004612dfd565b610668565b34801561021057600080fd5b506100ec61021f366004612c72565b610693565b34801561023057600080fd5b506101ad610737565b60606308b1869860e01b826040516024016102549190613246565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b805160208201fd5b600061032c600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61075b169050565b90507ff47261b0000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000082168114156104c4576003546040517f6070410800000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff16906360704108906103d090859060040161334f565b60206040518083038186803b1580156103e857600080fd5b505afa1580156103fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104209190810190612c8e565b905073ffffffffffffffffffffffffffffffffffffffff8116610448576104486100e76107b1565b6000610494601087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61080b169050565b90506104c181837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61084b565b50505b50505050565b6104d261090c565b61051b8184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff610955169050565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600080600061054b858561096b565b9050610558878288610ac1565b909350915080831115610572576105726100e78434610f28565b610582818463ffffffff610fca16565b905061058d81610fe9565b5094509492505050565b60008060006105a6858561096b565b90506105b38888886110a4565b9093509150808311156105cd576105cd6100e78434610f28565b6105dd818463ffffffff610fca16565b90506105e881610fe9565b509550959350505050565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b7ff23a6e610000000000000000000000000000000000000000000000000000000081565b7f770501f80000000000000000000000000000000000000000000000000000000081565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b61069b61090c565b73ffffffffffffffffffffffffffffffffffffffff81166106c6576106c16100e76113e0565b610734565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35b50565b7fbc197c810000000000000000000000000000000000000000000000000000000081565b6000816004018351101561077c5761077c6100e76003855185600401611417565b5060208183018101519101907fffffffff00000000000000000000000000000000000000000000000000000000165b92915050565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff3b96b8d0000000000000000000000000000000000000000000000000000000017905290565b6000816014018351101561082c5761082c6100e76004855185601401611417565b50016014015173ffffffffffffffffffffffffffffffffffffffff1690565b6040516060907f095ea7b300000000000000000000000000000000000000000000000000000000906108839085908590602401613329565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290506104c484826114bd565b60005473ffffffffffffffffffffffffffffffffffffffff16331461095357600054610953906100e790339073ffffffffffffffffffffffffffffffffffffffff16611575565b565b6109678230338463ffffffff61159216565b5050565b81518151600091908114610987576109876100e78285516117cd565b34915060005b818114610a365760008582815181106109a257fe5b60200260200101519050808410156109c1576109c16100e782866117ea565b6109d1848263ffffffff610fca16565b93508482815181106109df57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610a2c573d6000803e3d6000fd5b505060010161098d565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015610aa157600080fd5b505af1158015610ab5573d6000803e3d6000fd5b50505050505092915050565b6000806000610b76600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ce4c78b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3157600080fd5b505afa158015610b45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b699190810190613150565b3a9063ffffffff61180716565b90507fdc1600f30000000000000000000000000000000000000000000000000000000060005b87518114610f1d57878181518110610bb057fe5b60200260200101516080015160001480610be15750878181518110610bd157fe5b602002602001015160a001516000145b15610beb57610f15565b6000610c35610c0c8a8481518110610bff57fe5b6020026020010151611838565b610c165784610c19565b60005b610c298a8963ffffffff610fca16565b9063ffffffff610fca16565b90506000610c6560008b8581518110610c4a57fe5b6020026020010151610140015161075b90919063ffffffff16565b90506000807fffffffff000000000000000000000000000000000000000000000000000000008084169087161415610d6b57610cc360108d8781518110610ca857fe5b6020026020010151610140015161080b90919063ffffffff16565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190610d18903090600401613246565b60206040518083038186803b158015610d3057600080fd5b505afa158015610d44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d689190810190613150565b90505b600080610d9f8e8881518110610d7d57fe5b60200260200101518d8981518110610d9157fe5b6020026020010151886118ad565b91509150877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610ead576040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190610e3e903090600401613246565b60206040518083038186803b158015610e5657600080fd5b505afa158015610e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e8e9190810190613150565b9050610ea9610ea3828663ffffffff610fca16565b836119d7565b9150505b610ed8818f8981518110610ebd57fe5b6020026020010151610140015161095590919063ffffffff16565b610ee88b8363ffffffff6119ee16565b9a50610efa8a8263ffffffff6119ee16565b99508c8b10610f0e57505050505050610f1d565b5050505050505b600101610b9c565b505050935093915050565b606063cdcbed5d60e01b8383604051602401610f45929190613623565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b600082821115610fe357610fe36100e760028585611a06565b50900390565b8015610734576001546040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632e1a7d4d9061104590849060040161361a565b600060405180830381600087803b15801561105f57600080fd5b505af1158015611073573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f19350505050158015610967573d6000803e3d6000fd5b825160009081907fdc1600f30000000000000000000000000000000000000000000000000000000090825b8181146113c0578781815181106110e257fe5b60200260200101516080015160001480611113575087818151811061110357fe5b602002602001015160a001516000145b1561111d576113b8565b600061112f888663ffffffff610fca16565b9050600061114460008b8581518110610c4a57fe5b90506000807fffffffff00000000000000000000000000000000000000000000000000000000808416908816141561122f5761118760108d8781518110610ca857fe5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff8316906370a08231906111dc903090600401613246565b60206040518083038186803b1580156111f457600080fd5b505afa158015611208573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061122c9190810190613150565b90505b6000806112638e888151811061124157fe5b60200260200101518d898151811061125557fe5b602002602001015188611a25565b91509150887bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561136b576040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190611302903090600401613246565b60206040518083038186803b15801561131a57600080fd5b505afa15801561132e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113529190810190613150565b9050611367610ea3828663ffffffff610fca16565b9150505b61137b818f8981518110610ebd57fe5b61138b8b8363ffffffff6119ee16565b9a5061139d8a8263ffffffff6119ee16565b99508c8a106113b1575050505050506113c0565b5050505050505b6001016110cf565b50858310156113d6576113d66100e78785611af7565b5050935093915050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b6060632800659560e01b848484604051602401611436939291906133b1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290505b9392505050565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516114e6919061322a565b6000604051808303816000865af19150503d8060008114611523576040519150601f19603f3d011682016040523d82523d6000602084013e611528565b606091505b5091509150811561156c578051611540575050610967565b80516020141561156c576000611557826000611b14565b9050806001141561156a57505050610967565b505b6104c4816102d8565b6060631de45ad160e01b8383604051602401610f45929190613267565b8061159c576104c4565b60006115ae858263ffffffff61075b16565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff47261b000000000000000000000000000000000000000000000000000000000148061164157507fffffffff0000000000000000000000000000000000000000000000000000000081167fdc1600f300000000000000000000000000000000000000000000000000000000145b1561165d576116588585858563ffffffff611b2016565b6117c6565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f025717920000000000000000000000000000000000000000000000000000000014156116b9576116588585858563ffffffff611b6a16565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fa7cb5fb7000000000000000000000000000000000000000000000000000000001415611715576116588585858563ffffffff611c3916565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f94cfcdd7000000000000000000000000000000000000000000000000000000001415611771576116588585858563ffffffff611d8f16565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fc339d10a00000000000000000000000000000000000000000000000000000000146117c6576117c66100e782611e23565b5050505050565b6060633ecb6ceb60e01b8383604051602401610f45929190613623565b606063ecf40fd960e01b8383604051602401610f45929190613623565b600082611816575060006107ab565b8282028284828161182357fe5b04146114b6576114b66100e760018686611a06565b60006003826101800151511180156107ab57506101808201517f770501f8000000000000000000000000000000000000000000000000000000009061188490600063ffffffff61075b16565b7fffffffff00000000000000000000000000000000000000000000000000000000161492915050565b6000808460e00151600014806118d257506118d2856101a00151866101400151611e3e565b15611929576118df612710565b6118ea868587611feb565b9050611907816080015182602001516119ee90919063ffffffff16565b60608201518251919450611921919063ffffffff610fca16565b9150506119cf565b61193d856101a00151866101600151611e3e565b156119be5760a085015160e086015160009161196a9161196490829063ffffffff6119ee16565b86612026565b9050611974612710565b61197f878388611feb565b90506119b081608001516119a4836060015184602001516119ee90919063ffffffff16565b9063ffffffff6119ee16565b905190935091506119cf9050565b6119cf6100e7866101a0015161205c565b935093915050565b6000818310156119e757816114b6565b5090919050565b6000828201838110156114b6576114b66100e7600086865b606063e946c1bb60e01b8484846040516024016114369392919061338f565b6000808460e0015160001480611a4a5750611a4a856101a00151866101600151611e3e565b15611a6457600061196a8660a00151876080015186612026565b611a78856101a00151866101400151611e3e565b156119be576000611aa28660a001516119648860e001518960800151610fca90919063ffffffff16565b9050611aac612710565b611ab7878388611feb565b9050611ad4816080015182602001516119ee90919063ffffffff16565b60608201518251919550611aee919063ffffffff610fca16565b925050506119cf565b60606391353a0c60e01b8383604051602401610f45929190613623565b60006114b68383612077565b6000611b3385601063ffffffff61080b16565b905073ffffffffffffffffffffffffffffffffffffffff8416301415611b5e576116588184846120a1565b6117c6818585856120d9565b80600114611b7e57611b7e6100e78261219c565b6000611b9185601063ffffffff61080b16565b90506000611ba686602463ffffffff611b1416565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd90611bff908890889086906004016132f8565b600060405180830381600087803b158015611c1957600080fd5b505af1158015611c2d573d6000803e3d6000fd5b50505050505050505050565b60006060806060611c57600489518a6121b79092919063ffffffff16565b806020019051611c6a9190810190612caa565b9350935093509350600082519050606081604051908082528060200260200182016040528015611ca4578160200160208202803883390190505b50905060005b828114611cf657611cd788868381518110611cc157fe5b602002602001015161180790919063ffffffff16565b828281518110611ce357fe5b6020908102919091010152600101611caa565b506040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690632eb2c2d690611d51908c908c908a9087908a9060040161328e565b600060405180830381600087803b158015611d6b57600080fd5b505af1158015611d7f573d6000803e3d6000fd5b5050505050505050505050505050565b606080611da960048751886121b79092919063ffffffff16565b806020019051611dbc9190810190612fc5565b8051919350915060005b818114611e1957611e11838281518110611ddc57fe5b60200260200101518888611e0c888681518110611df557fe5b60200260200101518a61180790919063ffffffff16565b611592565b600101611dc6565b5050505050505050565b6060637996a27160e01b82604051602401610254919061334f565b600080611e51848263ffffffff61075b16565b90506000611e65848263ffffffff61075b16565b90507ff47261b0000000000000000000000000000000000000000000000000000000007fdc1600f3000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008416821480611efd57507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b8015611f5b57507fffffffff000000000000000000000000000000000000000000000000000000008381169083161480611f5b57507fffffffff00000000000000000000000000000000000000000000000000000000838116908216145b15611fc6576000611f7388601063ffffffff61080b16565b90506000611f8888601063ffffffff61080b16565b90508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161496505050505050506107ab565b611fd6878763ffffffff61223716565b9450505050506107ab565b5050505092915050565b611ff3612710565b611ffc84611838565b156120135761200c84848461225c565b90506114b6565b61201e8484846124b0565b949350505050565b600061201e8361205061204082600163ffffffff610fca16565b6119a4888763ffffffff61180716565b9063ffffffff61261d16565b60606331360af160e01b82604051602401610254919061337c565b60008160200183511015612098576120986100e76005855185602001611417565b50016020015190565b6040516060907fa9059cbb00000000000000000000000000000000000000000000000000000000906108839085908590602401613329565b6040516060907f23b872dd0000000000000000000000000000000000000000000000000000000090612113908690869086906024016132f8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290506117c685826114bd565b606063baffa47460e01b82604051602401610254919061361a565b6060818311156121d0576121d06100e760008585611417565b83518211156121e9576121e96100e76001848751611417565b8282036040519080825280601f01601f191660200182016040528015612216576020820181803883390190505b5090506114b661222582612647565b8461222f87612647565b01835161264d565b6000815183511480156114b65750508051602091820120825192909101919091201490565b612264612710565b61226c61273f565b604051806101800160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001866020015173ffffffffffffffffffffffffffffffffffffffff168152602001866040015173ffffffffffffffffffffffffffffffffffffffff168152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152602001866080015181526020018660a001518152602001600081526020016000815260200186610100015181526020018661012001518152602001866101400151815260200186610160015181525090506060600073ffffffffffffffffffffffffffffffffffffffff1663b4be83d5905060e01b82868660405160240161237f939291906133bf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600454915190925073ffffffffffffffffffffffffffffffffffffffff90911690600090606090839061243090869061322a565b6000604051808303816000865af19150503d806000811461246d576040519150601f19603f3d011682016040523d82523d6000602084013e612472565b606091505b509150915081156124a457805160801461248857fe5b8080602001905161249c9190810190613168565b602088015286525b50505050509392505050565b6124b8612710565b6040516060907f9b44d55600000000000000000000000000000000000000000000000000000000906124f2908790879087906024016134df565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600354915190925073ffffffffffffffffffffffffffffffffffffffff9091169060009060609083906125a390869061322a565b6000604051808303816000865af19150503d80600081146125e0576040519150601f19603f3d011682016040523d82523d6000602084013e6125e5565b606091505b5091509150811561261257805160a0146125fb57fe5b8080602001905161260f91908101906130ff565b94505b505050509392505050565b600081612633576126336100e760038585611a06565b600082848161263e57fe5b04949350505050565b60200190565b6020811015612677576001816020036101000a03801983511681855116808217865250505061051b565b828214156126845761051b565b828211156126be5760208103905080820181840181515b828510156126b657845186526020958601959094019361269b565b90525061051b565b60208103905080820181840183515b8186121561270757825182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092830192909101906126cd565b85525050505050565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b604051806101800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b80356107ab816136e6565b600082601f830112612813578081fd5b813561282661282182613658565b613631565b81815291506020808301908481018184028601820187101561284757600080fd5b60005b8481101561286f57813561285d816136e6565b8452928201929082019060010161284a565b505050505092915050565b600082601f83011261288a578081fd5b813561289861282182613658565b8181529150602080830190840160005b83811015611fe1576128c08760208435890101612bd7565b835260209283019291909101906001016128a8565b600082601f8301126128e5578081fd5b81356128f361282182613658565b818152915060208083019084810160005b8481101561286f57813587016101c0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838c0301121561294457600080fd5b61294d81613631565b6129598b8785016127f8565b81526129688b604085016127f8565b868201526129798b606085016127f8565b604082015261298b8b608085016127f8565b606082015260a0830135608082015260c083013560a082015260e083013560c08201526101008084013560e0830152610120808501358284015261014091508185013581840152506101608085013567ffffffffffffffff808211156129f057600080fd5b6129fe8f8b848a0101612bd7565b84860152610180935083870135915080821115612a1a57600080fd5b612a288f8b848a0101612bd7565b838601526101a0925082870135915080821115612a4457600080fd5b612a528f8b848a0101612bd7565b8486015285870135935080841115612a6957600080fd5b5050612a798d8984880101612bd7565b9083015250865250509282019290820190600101612904565b60008083601f840112612aa3578182fd5b50813567ffffffffffffffff811115612aba578182fd5b6020830191508360208083028501011115612ad457600080fd5b9250929050565b600082601f830112612aeb578081fd5b8151612af961282182613658565b818152915060208083019084810181840286018201871015612b1a57600080fd5b60005b8481101561286f57815184529282019290820190600101612b1d565b600082601f830112612b49578081fd5b8135612b5761282182613658565b818152915060208083019084810181840286018201871015612b7857600080fd5b60005b8481101561286f57813584529282019290820190600101612b7b565b60008083601f840112612ba8578182fd5b50813567ffffffffffffffff811115612bbf578182fd5b602083019150836020828501011115612ad457600080fd5b600082601f830112612be7578081fd5b8135612bf561282182613678565b9150808252836020828501011115612c0c57600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112612c35578081fd5b8151612c4361282182613678565b9150808252836020828501011115612c5a57600080fd5b612c6b8160208401602086016136ba565b5092915050565b600060208284031215612c83578081fd5b81356114b6816136e6565b600060208284031215612c9f578081fd5b81516114b6816136e6565b60008060008060808587031215612cbf578283fd5b8451612cca816136e6565b602086015190945067ffffffffffffffff80821115612ce7578485fd5b612cf388838901612adb565b94506040870151915080821115612d08578384fd5b612d1488838901612adb565b93506060870151915080821115612d29578283fd5b50612d3687828801612c25565b91505092959194509250565b60008060008060008060008060a0898b031215612d5d578586fd5b8835612d68816136e6565b97506020890135612d78816136e6565b9650604089013567ffffffffffffffff80821115612d94578788fd5b612da08c838d01612a92565b909850965060608b0135915080821115612db8578586fd5b612dc48c838d01612a92565b909650945060808b0135915080821115612ddc578384fd5b50612de98b828c01612b97565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215612e15578384fd5b8635612e20816136e6565b95506020870135612e30816136e6565b94506040870135935060608701359250608087013567ffffffffffffffff811115612e59578283fd5b612e6589828a01612b97565b979a9699509497509295939492505050565b60008060008060808587031215612e8c578182fd5b843567ffffffffffffffff80821115612ea3578384fd5b612eaf888389016128d5565b95506020870135915080821115612ec4578384fd5b612ed08883890161287a565b94506040870135915080821115612ee5578384fd5b612ef188838901612b39565b93506060870135915080821115612f06578283fd5b50612d3687828801612803565b600080600080600060a08688031215612f2a578283fd5b853567ffffffffffffffff80821115612f41578485fd5b612f4d89838a016128d5565b9650602088013595506040880135915080821115612f69578485fd5b612f7589838a0161287a565b94506060880135915080821115612f8a578283fd5b612f9689838a01612b39565b93506080880135915080821115612fab578283fd5b50612fb888828901612803565b9150509295509295909350565b60008060408385031215612fd7578182fd5b825167ffffffffffffffff80821115612fee578384fd5b612ffa86838701612adb565b9350602091508185015181811115613010578384fd5b85019050601f81018613613022578283fd5b805161303061282182613658565b81815283810190838501865b84811015613065576130538b888451890101612c25565b8452928601929086019060010161303c565b5096999098509650505050505050565b60008060208385031215613087578182fd5b823567ffffffffffffffff81111561309d578283fd5b6130a985828601612b97565b90969095509350505050565b6000806000604084860312156130c9578081fd5b833567ffffffffffffffff8111156130df578182fd5b6130eb86828701612b97565b909790965060209590950135949350505050565b600060a08284031215613110578081fd5b61311a60a0613631565b82518152602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b600060208284031215613161578081fd5b5051919050565b6000806040838503121561317a578182fd5b505080516020909101519092909150565b73ffffffffffffffffffffffffffffffffffffffff169052565b6000815180845260208401935060208301825b828110156131d65781518652602095860195909101906001016131b8565b5093949350505050565b600081518084526131f88160208601602086016136ba565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161323c8184602087016136ba565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a060408301526132c760a08301866131a5565b82810360608401526132d981866131a5565b83810360808501526132eb81866131e0565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b6000602082526114b660208301846131e0565b606081016004851061339d57fe5b938152602081019290925260409091015290565b606081016008851061339d57fe5b6000606082526133d360608301865161318b565b60208501516133e5608084018261318b565b5060408501516133f860a084018261318b565b50606085015161340b60c084018261318b565b50608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e088015192506101408381870152828901519350610160925083838701528189015193506101809150838287015280890151935050806101a08601525061347e6101e08501836131e0565b8188015192507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858203016101c08601526134b981846131e0565b91505085602085015283810360408501526134d481866131e0565b979650505050505050565b6000606082526134f360608301865161318b565b6020850151613505608084018261318b565b50604085015161351860a084018261318b565b50606085015161352b60c084018261318b565b50608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e0880151925061014083818701528289015193506101609250838387015281890151935061018091508382870152808901519350506101c06101a081818801526135a16102208801866131e0565b848b015195507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa094508488820301838901526135dd81876131e0565b925050828a0151945083878303016101e08801526135fb82866131e0565b9250808a01519450505081858203016102008601526134b981846131e0565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561365057600080fd5b604052919050565b600067ffffffffffffffff82111561366e578081fd5b5060209081020190565b600067ffffffffffffffff82111561368e578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b838110156136d55781810151838201526020016136bd565b838111156104c45750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461073457600080fdfea365627a7a72315820ebedf6ba0823da75dd29d928186748ec6baa07f40f145a90097baa22da29b56a6c6578706572696d656e74616cf564736f6c63430005100040"
|
|
},
|
|
"deployedBytecode": {
|
|
"object": "0x6080604052600436106100bc5760003560e01c8063bc197c8111610074578063f23a6e611161004e578063f23a6e61146101e4578063f2fde38b14610204578063fc67bf1c14610224576100bc565b8063bc197c811461018d578063e0a5c949146101ba578063e196001b146101cf576100bc565b80638da5cb5b116100a55780638da5cb5b1461012e578063907e5cc3146101595780639e8323151461017a576100bc565b8063442026ed146100ee578063630f1e6c1461010e575b60015473ffffffffffffffffffffffffffffffffffffffff1633146100ec576100ec6100e733610239565b6102d8565b005b3480156100fa57600080fd5b506100ec610109366004613075565b6102e0565b34801561011a57600080fd5b506100ec6101293660046130b5565b6104ca565b34801561013a57600080fd5b50610143610520565b6040516101509190613246565b60405180910390f35b61016c610167366004612e77565b61053c565b604051610150929190613623565b61016c610188366004612f13565b610597565b34801561019957600080fd5b506101ad6101a8366004612d42565b6105f3565b604051610150919061334f565b3480156101c657600080fd5b506101ad610620565b3480156101db57600080fd5b506101ad610644565b3480156101f057600080fd5b506101ad6101ff366004612dfd565b610668565b34801561021057600080fd5b506100ec61021f366004612c72565b610693565b34801561023057600080fd5b506101ad610737565b60606308b1869860e01b826040516024016102549190613246565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b805160208201fd5b600061032c600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61075b169050565b90507ff47261b0000000000000000000000000000000000000000000000000000000007fffffffff0000000000000000000000000000000000000000000000000000000082168114156104c4576003546040517f6070410800000000000000000000000000000000000000000000000000000000815260009173ffffffffffffffffffffffffffffffffffffffff16906360704108906103d090859060040161334f565b60206040518083038186803b1580156103e857600080fd5b505afa1580156103fc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506104209190810190612c8e565b905073ffffffffffffffffffffffffffffffffffffffff8116610448576104486100e76107b1565b6000610494601087878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61080b169050565b90506104c181837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61084b565b50505b50505050565b6104d261090c565b61051b8184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff610955169050565b505050565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600080600061054b858561096b565b9050610558878288610ac1565b909350915080831115610572576105726100e78434610f28565b610582818463ffffffff610fca16565b905061058d81610fe9565b5094509492505050565b60008060006105a6858561096b565b90506105b38888886110a4565b9093509150808311156105cd576105cd6100e78434610f28565b6105dd818463ffffffff610fca16565b90506105e881610fe9565b509550959350505050565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b7ff23a6e610000000000000000000000000000000000000000000000000000000081565b7f770501f80000000000000000000000000000000000000000000000000000000081565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b61069b61090c565b73ffffffffffffffffffffffffffffffffffffffff81166106c6576106c16100e76113e0565b610734565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35b50565b7fbc197c810000000000000000000000000000000000000000000000000000000081565b6000816004018351101561077c5761077c6100e76003855185600401611417565b5060208183018101519101907fffffffff00000000000000000000000000000000000000000000000000000000165b92915050565b6040805160048152602481019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167ff3b96b8d0000000000000000000000000000000000000000000000000000000017905290565b6000816014018351101561082c5761082c6100e76004855185601401611417565b50016014015173ffffffffffffffffffffffffffffffffffffffff1690565b6040516060907f095ea7b300000000000000000000000000000000000000000000000000000000906108839085908590602401613329565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290506104c484826114bd565b60005473ffffffffffffffffffffffffffffffffffffffff16331461095357600054610953906100e790339073ffffffffffffffffffffffffffffffffffffffff16611575565b565b6109678230338463ffffffff61159216565b5050565b81518151600091908114610987576109876100e78285516117cd565b34915060005b818114610a365760008582815181106109a257fe5b60200260200101519050808410156109c1576109c16100e782866117ea565b6109d1848263ffffffff610fca16565b93508482815181106109df57fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610a2c573d6000803e3d6000fd5b505060010161098d565b50600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015610aa157600080fd5b505af1158015610ab5573d6000803e3d6000fd5b50505050505092915050565b6000806000610b76600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631ce4c78b6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3157600080fd5b505afa158015610b45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610b699190810190613150565b3a9063ffffffff61180716565b90507fdc1600f30000000000000000000000000000000000000000000000000000000060005b87518114610f1d57878181518110610bb057fe5b60200260200101516080015160001480610be15750878181518110610bd157fe5b602002602001015160a001516000145b15610beb57610f15565b6000610c35610c0c8a8481518110610bff57fe5b6020026020010151611838565b610c165784610c19565b60005b610c298a8963ffffffff610fca16565b9063ffffffff610fca16565b90506000610c6560008b8581518110610c4a57fe5b6020026020010151610140015161075b90919063ffffffff16565b90506000807fffffffff000000000000000000000000000000000000000000000000000000008084169087161415610d6b57610cc360108d8781518110610ca857fe5b6020026020010151610140015161080b90919063ffffffff16565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190610d18903090600401613246565b60206040518083038186803b158015610d3057600080fd5b505afa158015610d44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610d689190810190613150565b90505b600080610d9f8e8881518110610d7d57fe5b60200260200101518d8981518110610d9157fe5b6020026020010151886118ad565b91509150877bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415610ead576040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190610e3e903090600401613246565b60206040518083038186803b158015610e5657600080fd5b505afa158015610e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610e8e9190810190613150565b9050610ea9610ea3828663ffffffff610fca16565b836119d7565b9150505b610ed8818f8981518110610ebd57fe5b6020026020010151610140015161095590919063ffffffff16565b610ee88b8363ffffffff6119ee16565b9a50610efa8a8263ffffffff6119ee16565b99508c8b10610f0e57505050505050610f1d565b5050505050505b600101610b9c565b505050935093915050565b606063cdcbed5d60e01b8383604051602401610f45929190613623565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b600082821115610fe357610fe36100e760028585611a06565b50900390565b8015610734576001546040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff90911690632e1a7d4d9061104590849060040161361a565b600060405180830381600087803b15801561105f57600080fd5b505af1158015611073573d6000803e3d6000fd5b505060405133925083156108fc02915083906000818181858888f19350505050158015610967573d6000803e3d6000fd5b825160009081907fdc1600f30000000000000000000000000000000000000000000000000000000090825b8181146113c0578781815181106110e257fe5b60200260200101516080015160001480611113575087818151811061110357fe5b602002602001015160a001516000145b1561111d576113b8565b600061112f888663ffffffff610fca16565b9050600061114460008b8581518110610c4a57fe5b90506000807fffffffff00000000000000000000000000000000000000000000000000000000808416908816141561122f5761118760108d8781518110610ca857fe5b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290925073ffffffffffffffffffffffffffffffffffffffff8316906370a08231906111dc903090600401613246565b60206040518083038186803b1580156111f457600080fd5b505afa158015611208573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061122c9190810190613150565b90505b6000806112638e888151811061124157fe5b60200260200101518d898151811061125557fe5b602002602001015188611a25565b91509150887bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916857bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141561136b576040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff8616906370a0823190611302903090600401613246565b60206040518083038186803b15801561131a57600080fd5b505afa15801561132e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506113529190810190613150565b9050611367610ea3828663ffffffff610fca16565b9150505b61137b818f8981518110610ebd57fe5b61138b8b8363ffffffff6119ee16565b9a5061139d8a8263ffffffff6119ee16565b99508c8a106113b1575050505050506113c0565b5050505050505b6001016110cf565b50858310156113d6576113d66100e78785611af7565b5050935093915050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b6060632800659560e01b848484604051602401611436939291906133b1565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290505b9392505050565b600060608373ffffffffffffffffffffffffffffffffffffffff16836040516114e6919061322a565b6000604051808303816000865af19150503d8060008114611523576040519150601f19603f3d011682016040523d82523d6000602084013e611528565b606091505b5091509150811561156c578051611540575050610967565b80516020141561156c576000611557826000611b14565b9050806001141561156a57505050610967565b505b6104c4816102d8565b6060631de45ad160e01b8383604051602401610f45929190613267565b8061159c576104c4565b60006115ae858263ffffffff61075b16565b90507fffffffff0000000000000000000000000000000000000000000000000000000081167ff47261b000000000000000000000000000000000000000000000000000000000148061164157507fffffffff0000000000000000000000000000000000000000000000000000000081167fdc1600f300000000000000000000000000000000000000000000000000000000145b1561165d576116588585858563ffffffff611b2016565b6117c6565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f025717920000000000000000000000000000000000000000000000000000000014156116b9576116588585858563ffffffff611b6a16565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fa7cb5fb7000000000000000000000000000000000000000000000000000000001415611715576116588585858563ffffffff611c3916565b7fffffffff0000000000000000000000000000000000000000000000000000000081167f94cfcdd7000000000000000000000000000000000000000000000000000000001415611771576116588585858563ffffffff611d8f16565b7fffffffff0000000000000000000000000000000000000000000000000000000081167fc339d10a00000000000000000000000000000000000000000000000000000000146117c6576117c66100e782611e23565b5050505050565b6060633ecb6ceb60e01b8383604051602401610f45929190613623565b606063ecf40fd960e01b8383604051602401610f45929190613623565b600082611816575060006107ab565b8282028284828161182357fe5b04146114b6576114b66100e760018686611a06565b60006003826101800151511180156107ab57506101808201517f770501f8000000000000000000000000000000000000000000000000000000009061188490600063ffffffff61075b16565b7fffffffff00000000000000000000000000000000000000000000000000000000161492915050565b6000808460e00151600014806118d257506118d2856101a00151866101400151611e3e565b15611929576118df612710565b6118ea868587611feb565b9050611907816080015182602001516119ee90919063ffffffff16565b60608201518251919450611921919063ffffffff610fca16565b9150506119cf565b61193d856101a00151866101600151611e3e565b156119be5760a085015160e086015160009161196a9161196490829063ffffffff6119ee16565b86612026565b9050611974612710565b61197f878388611feb565b90506119b081608001516119a4836060015184602001516119ee90919063ffffffff16565b9063ffffffff6119ee16565b905190935091506119cf9050565b6119cf6100e7866101a0015161205c565b935093915050565b6000818310156119e757816114b6565b5090919050565b6000828201838110156114b6576114b66100e7600086865b606063e946c1bb60e01b8484846040516024016114369392919061338f565b6000808460e0015160001480611a4a5750611a4a856101a00151866101600151611e3e565b15611a6457600061196a8660a00151876080015186612026565b611a78856101a00151866101400151611e3e565b156119be576000611aa28660a001516119648860e001518960800151610fca90919063ffffffff16565b9050611aac612710565b611ab7878388611feb565b9050611ad4816080015182602001516119ee90919063ffffffff16565b60608201518251919550611aee919063ffffffff610fca16565b925050506119cf565b60606391353a0c60e01b8383604051602401610f45929190613623565b60006114b68383612077565b6000611b3385601063ffffffff61080b16565b905073ffffffffffffffffffffffffffffffffffffffff8416301415611b5e576116588184846120a1565b6117c6818585856120d9565b80600114611b7e57611b7e6100e78261219c565b6000611b9185601063ffffffff61080b16565b90506000611ba686602463ffffffff611b1416565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8316906323b872dd90611bff908890889086906004016132f8565b600060405180830381600087803b158015611c1957600080fd5b505af1158015611c2d573d6000803e3d6000fd5b50505050505050505050565b60006060806060611c57600489518a6121b79092919063ffffffff16565b806020019051611c6a9190810190612caa565b9350935093509350600082519050606081604051908082528060200260200182016040528015611ca4578160200160208202803883390190505b50905060005b828114611cf657611cd788868381518110611cc157fe5b602002602001015161180790919063ffffffff16565b828281518110611ce357fe5b6020908102919091010152600101611caa565b506040517f2eb2c2d600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff871690632eb2c2d690611d51908c908c908a9087908a9060040161328e565b600060405180830381600087803b158015611d6b57600080fd5b505af1158015611d7f573d6000803e3d6000fd5b5050505050505050505050505050565b606080611da960048751886121b79092919063ffffffff16565b806020019051611dbc9190810190612fc5565b8051919350915060005b818114611e1957611e11838281518110611ddc57fe5b60200260200101518888611e0c888681518110611df557fe5b60200260200101518a61180790919063ffffffff16565b611592565b600101611dc6565b5050505050505050565b6060637996a27160e01b82604051602401610254919061334f565b600080611e51848263ffffffff61075b16565b90506000611e65848263ffffffff61075b16565b90507ff47261b0000000000000000000000000000000000000000000000000000000007fdc1600f3000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008416821480611efd57507fffffffff00000000000000000000000000000000000000000000000000000000848116908216145b8015611f5b57507fffffffff000000000000000000000000000000000000000000000000000000008381169083161480611f5b57507fffffffff00000000000000000000000000000000000000000000000000000000838116908216145b15611fc6576000611f7388601063ffffffff61080b16565b90506000611f8888601063ffffffff61080b16565b90508073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161496505050505050506107ab565b611fd6878763ffffffff61223716565b9450505050506107ab565b5050505092915050565b611ff3612710565b611ffc84611838565b156120135761200c84848461225c565b90506114b6565b61201e8484846124b0565b949350505050565b600061201e8361205061204082600163ffffffff610fca16565b6119a4888763ffffffff61180716565b9063ffffffff61261d16565b60606331360af160e01b82604051602401610254919061337c565b60008160200183511015612098576120986100e76005855185602001611417565b50016020015190565b6040516060907fa9059cbb00000000000000000000000000000000000000000000000000000000906108839085908590602401613329565b6040516060907f23b872dd0000000000000000000000000000000000000000000000000000000090612113908690869086906024016132f8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290506117c685826114bd565b606063baffa47460e01b82604051602401610254919061361a565b6060818311156121d0576121d06100e760008585611417565b83518211156121e9576121e96100e76001848751611417565b8282036040519080825280601f01601f191660200182016040528015612216576020820181803883390190505b5090506114b661222582612647565b8461222f87612647565b01835161264d565b6000815183511480156114b65750508051602091820120825192909101919091201490565b612264612710565b61226c61273f565b604051806101800160405280866000015173ffffffffffffffffffffffffffffffffffffffff168152602001866020015173ffffffffffffffffffffffffffffffffffffffff168152602001866040015173ffffffffffffffffffffffffffffffffffffffff168152602001866060015173ffffffffffffffffffffffffffffffffffffffff168152602001866080015181526020018660a001518152602001600081526020016000815260200186610100015181526020018661012001518152602001866101400151815260200186610160015181525090506060600073ffffffffffffffffffffffffffffffffffffffff1663b4be83d5905060e01b82868660405160240161237f939291906133bf565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600454915190925073ffffffffffffffffffffffffffffffffffffffff90911690600090606090839061243090869061322a565b6000604051808303816000865af19150503d806000811461246d576040519150601f19603f3d011682016040523d82523d6000602084013e612472565b606091505b509150915081156124a457805160801461248857fe5b8080602001905161249c9190810190613168565b602088015286525b50505050509392505050565b6124b8612710565b6040516060907f9b44d55600000000000000000000000000000000000000000000000000000000906124f2908790879087906024016134df565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252600354915190925073ffffffffffffffffffffffffffffffffffffffff9091169060009060609083906125a390869061322a565b6000604051808303816000865af19150503d80600081146125e0576040519150601f19603f3d011682016040523d82523d6000602084013e6125e5565b606091505b5091509150811561261257805160a0146125fb57fe5b8080602001905161260f91908101906130ff565b94505b505050509392505050565b600081612633576126336100e760038585611a06565b600082848161263e57fe5b04949350505050565b60200190565b6020811015612677576001816020036101000a03801983511681855116808217865250505061051b565b828214156126845761051b565b828211156126be5760208103905080820181840181515b828510156126b657845186526020958601959094019361269b565b90525061051b565b60208103905080820181840183515b8186121561270757825182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe092830192909101906126cd565b85525050505050565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b604051806101800160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160608152602001606081525090565b80356107ab816136e6565b600082601f830112612813578081fd5b813561282661282182613658565b613631565b81815291506020808301908481018184028601820187101561284757600080fd5b60005b8481101561286f57813561285d816136e6565b8452928201929082019060010161284a565b505050505092915050565b600082601f83011261288a578081fd5b813561289861282182613658565b8181529150602080830190840160005b83811015611fe1576128c08760208435890101612bd7565b835260209283019291909101906001016128a8565b600082601f8301126128e5578081fd5b81356128f361282182613658565b818152915060208083019084810160005b8481101561286f57813587016101c0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838c0301121561294457600080fd5b61294d81613631565b6129598b8785016127f8565b81526129688b604085016127f8565b868201526129798b606085016127f8565b604082015261298b8b608085016127f8565b606082015260a0830135608082015260c083013560a082015260e083013560c08201526101008084013560e0830152610120808501358284015261014091508185013581840152506101608085013567ffffffffffffffff808211156129f057600080fd5b6129fe8f8b848a0101612bd7565b84860152610180935083870135915080821115612a1a57600080fd5b612a288f8b848a0101612bd7565b838601526101a0925082870135915080821115612a4457600080fd5b612a528f8b848a0101612bd7565b8486015285870135935080841115612a6957600080fd5b5050612a798d8984880101612bd7565b9083015250865250509282019290820190600101612904565b60008083601f840112612aa3578182fd5b50813567ffffffffffffffff811115612aba578182fd5b6020830191508360208083028501011115612ad457600080fd5b9250929050565b600082601f830112612aeb578081fd5b8151612af961282182613658565b818152915060208083019084810181840286018201871015612b1a57600080fd5b60005b8481101561286f57815184529282019290820190600101612b1d565b600082601f830112612b49578081fd5b8135612b5761282182613658565b818152915060208083019084810181840286018201871015612b7857600080fd5b60005b8481101561286f57813584529282019290820190600101612b7b565b60008083601f840112612ba8578182fd5b50813567ffffffffffffffff811115612bbf578182fd5b602083019150836020828501011115612ad457600080fd5b600082601f830112612be7578081fd5b8135612bf561282182613678565b9150808252836020828501011115612c0c57600080fd5b8060208401602084013760009082016020015292915050565b600082601f830112612c35578081fd5b8151612c4361282182613678565b9150808252836020828501011115612c5a57600080fd5b612c6b8160208401602086016136ba565b5092915050565b600060208284031215612c83578081fd5b81356114b6816136e6565b600060208284031215612c9f578081fd5b81516114b6816136e6565b60008060008060808587031215612cbf578283fd5b8451612cca816136e6565b602086015190945067ffffffffffffffff80821115612ce7578485fd5b612cf388838901612adb565b94506040870151915080821115612d08578384fd5b612d1488838901612adb565b93506060870151915080821115612d29578283fd5b50612d3687828801612c25565b91505092959194509250565b60008060008060008060008060a0898b031215612d5d578586fd5b8835612d68816136e6565b97506020890135612d78816136e6565b9650604089013567ffffffffffffffff80821115612d94578788fd5b612da08c838d01612a92565b909850965060608b0135915080821115612db8578586fd5b612dc48c838d01612a92565b909650945060808b0135915080821115612ddc578384fd5b50612de98b828c01612b97565b999c989b5096995094979396929594505050565b60008060008060008060a08789031215612e15578384fd5b8635612e20816136e6565b95506020870135612e30816136e6565b94506040870135935060608701359250608087013567ffffffffffffffff811115612e59578283fd5b612e6589828a01612b97565b979a9699509497509295939492505050565b60008060008060808587031215612e8c578182fd5b843567ffffffffffffffff80821115612ea3578384fd5b612eaf888389016128d5565b95506020870135915080821115612ec4578384fd5b612ed08883890161287a565b94506040870135915080821115612ee5578384fd5b612ef188838901612b39565b93506060870135915080821115612f06578283fd5b50612d3687828801612803565b600080600080600060a08688031215612f2a578283fd5b853567ffffffffffffffff80821115612f41578485fd5b612f4d89838a016128d5565b9650602088013595506040880135915080821115612f69578485fd5b612f7589838a0161287a565b94506060880135915080821115612f8a578283fd5b612f9689838a01612b39565b93506080880135915080821115612fab578283fd5b50612fb888828901612803565b9150509295509295909350565b60008060408385031215612fd7578182fd5b825167ffffffffffffffff80821115612fee578384fd5b612ffa86838701612adb565b9350602091508185015181811115613010578384fd5b85019050601f81018613613022578283fd5b805161303061282182613658565b81815283810190838501865b84811015613065576130538b888451890101612c25565b8452928601929086019060010161303c565b5096999098509650505050505050565b60008060208385031215613087578182fd5b823567ffffffffffffffff81111561309d578283fd5b6130a985828601612b97565b90969095509350505050565b6000806000604084860312156130c9578081fd5b833567ffffffffffffffff8111156130df578182fd5b6130eb86828701612b97565b909790965060209590950135949350505050565b600060a08284031215613110578081fd5b61311a60a0613631565b82518152602083015160208201526040830151604082015260608301516060820152608083015160808201528091505092915050565b600060208284031215613161578081fd5b5051919050565b6000806040838503121561317a578182fd5b505080516020909101519092909150565b73ffffffffffffffffffffffffffffffffffffffff169052565b6000815180845260208401935060208301825b828110156131d65781518652602095860195909101906001016131b8565b5093949350505050565b600081518084526131f88160208601602086016136ba565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000825161323c8184602087016136ba565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525060a060408301526132c760a08301866131a5565b82810360608401526132d981866131a5565b83810360808501526132eb81866131e0565b9998505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b6000602082526114b660208301846131e0565b606081016004851061339d57fe5b938152602081019290925260409091015290565b606081016008851061339d57fe5b6000606082526133d360608301865161318b565b60208501516133e5608084018261318b565b5060408501516133f860a084018261318b565b50606085015161340b60c084018261318b565b50608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e088015192506101408381870152828901519350610160925083838701528189015193506101809150838287015280890151935050806101a08601525061347e6101e08501836131e0565b8188015192507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa0858203016101c08601526134b981846131e0565b91505085602085015283810360408501526134d481866131e0565b979650505050505050565b6000606082526134f360608301865161318b565b6020850151613505608084018261318b565b50604085015161351860a084018261318b565b50606085015161352b60c084018261318b565b50608085015160e083015260a0850151610100818185015260c08701519150610120828186015260e0880151925061014083818701528289015193506101609250838387015281890151935061018091508382870152808901519350506101c06101a081818801526135a16102208801866131e0565b848b015195507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa094508488820301838901526135dd81876131e0565b925050828a0151945083878303016101e08801526135fb82866131e0565b9250808a01519450505081858203016102008601526134b981846131e0565b90815260200190565b918252602082015260400190565b60405181810167ffffffffffffffff8111828210171561365057600080fd5b604052919050565b600067ffffffffffffffff82111561366e578081fd5b5060209081020190565b600067ffffffffffffffff82111561368e578081fd5b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200190565b60005b838110156136d55781810151838201526020016136bd565b838111156104c45750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461073457600080fdfea365627a7a72315820ebedf6ba0823da75dd29d928186748ec6baa07f40f145a90097baa22da29b56a6c6578706572696d656e74616cf564736f6c63430005100040"
|
|
}
|
|
}
|
|
},
|
|
"compiler": {
|
|
"name": "solc",
|
|
"version": "soljson-v0.5.16+commit.9c3226ce.js",
|
|
"settings": {
|
|
"optimizer": {
|
|
"enabled": true,
|
|
"runs": 1000000,
|
|
"details": { "yul": true, "deduplicate": true, "cse": true, "constantOptimizer": true }
|
|
},
|
|
"outputSelection": {
|
|
"*": {
|
|
"*": [
|
|
"abi",
|
|
"devdoc",
|
|
"evm.bytecode.object",
|
|
"evm.bytecode.sourceMap",
|
|
"evm.deployedBytecode.object",
|
|
"evm.deployedBytecode.sourceMap"
|
|
]
|
|
}
|
|
},
|
|
"evmVersion": "istanbul"
|
|
}
|
|
},
|
|
"chains": {}
|
|
}
|