Overview ERC721
Total Supply:
0

Profile Summary
Blockchain:
Fuji (43113)

Contract Source Code Verified (Partial Match)
Contract Name:
ConstantOutflowNFT

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
Yes with 200 runs

Created At:
Mon, 29 Jan 2024 20:14:47 GMT
ConstantOutflowNFT.sol
contracts
superfluid
ConstantOutflowNFT.sol


Contract ABI
[
  {
    "inputs": [
      {
        "internalType": "contract ISuperfluid",
        "name": "host",
        "type": "address"
      },
      {
        "internalType": "contract IConstantFlowAgreementV1",
        "name": "cfaV1",
        "type": "address"
      },
      {
        "internalType": "contract IGeneralDistributionAgreementV1",
        "name": "gdaV1",
        "type": "address"
      },
      {
        "internalType": "contract IConstantInflowNFT",
        "name": "constantInflowNFT",
        "type": "address"
      }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [],
    "name": "CFA_NFT_APPROVE_CALLER_NOT_OWNER_OR_APPROVED_FOR_ALL",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CFA_NFT_APPROVE_TO_CALLER",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CFA_NFT_APPROVE_TO_CURRENT_OWNER",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CFA_NFT_INVALID_TOKEN_ID",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CFA_NFT_ONLY_SUPER_TOKEN_FACTORY",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CFA_NFT_TRANSFER_CALLER_NOT_OWNER_OR_APPROVED_FOR_ALL",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CFA_NFT_TRANSFER_FROM_INCORRECT_OWNER",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CFA_NFT_TRANSFER_IS_NOT_ALLOWED",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "CFA_NFT_TRANSFER_TO_ZERO_ADDRESS",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "COF_NFT_INVALID_SUPER_TOKEN",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "COF_NFT_MINT_TO_AND_FLOW_RECEIVER_SAME",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "COF_NFT_MINT_TO_ZERO_ADDRESS",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "COF_NFT_ONLY_CONSTANT_INFLOW",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "COF_NFT_ONLY_FLOW_AGREEMENTS",
    "type": "error"
  },
  {
    "inputs": [],
    "name": "COF_NFT_TOKEN_ALREADY_EXISTS",
    "type": "error"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "approved",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "Approval",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "ApprovalForAll",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "bytes32",
        "name": "uuid",
        "type": "bytes32"
      },
      {
        "indexed": false,
        "internalType": "address",
        "name": "codeAddress",
        "type": "address"
      }
    ],
    "name": "CodeUpdated",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint8",
        "name": "version",
        "type": "uint8"
      }
    ],
    "name": "Initialized",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": false,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "MetadataUpdate",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "indexed": true,
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "Transfer",
    "type": "event"
  },
  {
    "inputs": [],
    "name": "CONSTANT_FLOW_AGREEMENT_V1",
    "outputs": [
      {
        "internalType": "contract IConstantFlowAgreementV1",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "CONSTANT_INFLOW_NFT",
    "outputs": [
      {
        "internalType": "contract IConstantInflowNFT",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "DEFAULT_BASE_URI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "GENERAL_DISTRIBUTION_AGREEMENT_V1",
    "outputs": [
      {
        "internalType": "contract IGeneralDistributionAgreementV1",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "HOST",
    "outputs": [
      {
        "internalType": "contract ISuperfluid",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "approve",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "name": "balanceOf",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "balance",
        "type": "uint256"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "baseURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "castrate",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "flowDataByTokenId",
    "outputs": [
      {
        "components": [
          {
            "internalType": "address",
            "name": "superToken",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "flowSender",
            "type": "address"
          },
          {
            "internalType": "address",
            "name": "flowReceiver",
            "type": "address"
          },
          {
            "internalType": "uint32",
            "name": "flowStartDate",
            "type": "uint32"
          }
        ],
        "internalType": "struct IFlowNFTBase.FlowNFTData",
        "name": "flowData",
        "type": "tuple"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "getApproved",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "getCodeAddress",
    "outputs": [
      {
        "internalType": "address",
        "name": "codeAddress",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "superToken",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "sender",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "receiver",
        "type": "address"
      }
    ],
    "name": "getTokenId",
    "outputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "string",
        "name": "nftName",
        "type": "string"
      },
      {
        "internalType": "string",
        "name": "nftSymbol",
        "type": "string"
      }
    ],
    "name": "initialize",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "owner",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      }
    ],
    "name": "isApprovedForAll",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "name",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "contract ISuperfluidToken",
        "name": "superToken",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "flowSender",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "flowReceiver",
        "type": "address"
      }
    ],
    "name": "onCreate",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "contract ISuperfluidToken",
        "name": "superToken",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "flowSender",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "flowReceiver",
        "type": "address"
      }
    ],
    "name": "onDelete",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "contract ISuperfluidToken",
        "name": "superToken",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "flowSender",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "flowReceiver",
        "type": "address"
      }
    ],
    "name": "onUpdate",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "ownerOf",
    "outputs": [
      {
        "internalType": "address",
        "name": "",
        "type": "address"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "proxiableUUID",
    "outputs": [
      {
        "internalType": "bytes32",
        "name": "",
        "type": "bytes32"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      },
      {
        "internalType": "bytes",
        "name": "data",
        "type": "bytes"
      }
    ],
    "name": "safeTransferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "operator",
        "type": "address"
      },
      {
        "internalType": "bool",
        "name": "approved",
        "type": "bool"
      }
    ],
    "name": "setApprovalForAll",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "bytes4",
        "name": "interfaceId",
        "type": "bytes4"
      }
    ],
    "name": "supportsInterface",
    "outputs": [
      {
        "internalType": "bool",
        "name": "",
        "type": "bool"
      }
    ],
    "stateMutability": "pure",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "symbol",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "tokenURI",
    "outputs": [
      {
        "internalType": "string",
        "name": "",
        "type": "string"
      }
    ],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "from",
        "type": "address"
      },
      {
        "internalType": "address",
        "name": "to",
        "type": "address"
      },
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "transferFrom",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "uint256",
        "name": "tokenId",
        "type": "uint256"
      }
    ],
    "name": "triggerMetadataUpdate",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "address",
        "name": "newAddress",
        "type": "address"
      }
    ],
    "name": "updateCode",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  }
]


Contract Creation Code
6101006040523480156200001257600080fd5b50604051620024db380380620024db833981016040819052620000359162000071565b6001600160a01b0393841660c052918316608052821660a0521660e052620000d9565b6001600160a01b03811681146200006e57600080fd5b50565b600080600080608085870312156200008857600080fd5b8451620000958162000058565b6020860151909450620000a88162000058565b6040860151909350620000bb8162000058565b6060860151909250620000ce8162000058565b939692955090935050565b60805160a05160c05160e05161237b620001606000396000818161032201528181610bb201528181610ce30152610e310152600081816102fb01526106bb01526000818161029b01528181610b2201528181610c5c0152610d8f01526000818161026101528181610aee01528181610c2801528181610d5b0152611329015261237b6000f3fe608060405234801561001057600080fd5b50600436106101da5760003560e01c80636352211e11610104578063a22cb465116100a2578063e985e9c511610071578063e985e9c51461047b578063eb54a7ca1461048e578063ef1f0237146104a1578063f7e3d983146104b457600080fd5b8063a22cb4651461043a578063a497325b1461044d578063b88d4fde14610455578063c87b56dd1461046857600080fd5b806389f71d2d116100de57806389f71d2d146103be5780638d47859e146103d157806395d89b411461042a5780639903ad381461043257600080fd5b80636352211e1461038f5780636c0360eb146103a257806370a08231146103aa57600080fd5b80632f3885601161017c5780634c5c0c851161014b5780634c5c0c851461031d5780634cd88b761461034457806350d75d251461035757806352d1902d1461035f57600080fd5b80632f388560146102bd57806342842e0e146102d057806346951954146102e357806349f289dc146102f657600080fd5b8063095ea7b3116101b8578063095ea7b314610247578063181561011461025c57806323b872dd146102835780632925af7e1461029657600080fd5b806301ffc9a7146101df57806306fdde0314610207578063081812fc1461021c575b600080fd5b6101f26101ed366004611a7b565b6104c7565b60405190151581526020015b60405180910390f35b61020f610519565b6040516101fe9190611ac9565b61022f61022a366004611afc565b6105ab565b6040516001600160a01b0390911681526020016101fe565b61025a610255366004611b2a565b6105d2565b005b61022f7f000000000000000000000000000000000000000000000000000000000000000081565b61025a610291366004611b56565b61065e565b61022f7f000000000000000000000000000000000000000000000000000000000000000081565b61025a6102cb366004611afc565b610690565b61025a6102de366004611b56565b61069c565b61025a6102f1366004611b97565b6106b7565b61022f7f000000000000000000000000000000000000000000000000000000000000000081565b61022f7f000000000000000000000000000000000000000000000000000000000000000081565b61025a610352366004611c81565b610773565b61022f610859565b7f87e44dce6a0d65a5ccf441783661f5727c2624b1f0088bbe957ce2c95406b7845b6040519081526020016101fe565b61022f61039d366004611afc565b610888565b61020f6108c1565b6103816103b8366004611b97565b50600190565b6103816103cc366004611ce5565b6108e1565b6103e46103df366004611afc565b6108f6565b6040805182516001600160a01b03908116825260208085015182169083015283830151169181019190915260609182015163ffffffff16918101919091526080016101fe565b61020f610977565b61025a610986565b61025a610448366004611d30565b610a48565b61020f610a53565b61025a610463366004611d6e565b610a6f565b61020f610476366004611afc565b610aa8565b6101f2610489366004611dee565b610ab5565b61025a61049c366004611ce5565b610ae3565b61025a6104af366004611ce5565b610c1d565b61025a6104c2366004611ce5565b610d50565b60006301ffc9a760e01b6001600160e01b0319831614806104f857506380ac58cd60e01b6001600160e01b03198316145b806105135750635b5e139f60e01b6001600160e01b03198316145b92915050565b60606001805461052890611e1c565b80601f016020809104026020016040519081016040528092919081815260200182805461055490611e1c565b80156105a15780601f10610576576101008083540402835291602001916105a1565b820191906000526020600020905b81548152906001019060200180831161058457829003601f168201915b5050505050905090565b60006105b682610e60565b506000908152600360205260409020546001600160a01b031690565b60006105dd82610888565b9050806001600160a01b0316836001600160a01b0316036106115760405163e4790b2560e01b815260040160405180910390fd5b336001600160a01b03821614801590610631575061062f8133610ab5565b155b1561064f5760405163519a92c160e11b815260040160405180910390fd5b6106598383610e98565b505050565b6106683382610f02565b610685576040516312a8eb0360e11b815260040160405180910390fd5b610659838383610f60565b61069981610f79565b50565b61065983838360405180602001604052806000815250610a6f565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663731aed6e6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610717573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061073b9190611e56565b9050336001600160a01b038216146107665760405163ebb7505b60e01b815260040160405180910390fd5b61076f82610fa9565b5050565b600054610100900460ff16158080156107935750600054600160ff909116105b806107ad5750303b1580156107ad575060005460ff166001145b6107d25760405162461bcd60e51b81526004016107c990611e73565b60405180910390fd5b6000805460ff1916600117905580156107f5576000805461ff0019166101001790555b60016108018482611f0f565b50600261080e8382611f0f565b508015610659576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a1505050565b60006108837f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b905090565b6000818152601660205260408120600101546001600160a01b0316806105135760405163eab95e3b60e01b815260040160405180910390fd5b60606040518060600160405280602d8152602001612319602d9139905090565b60006108ee8484846111e3565b949350505050565b60408051608081018252600080825260208201819052918101829052606081019190915250600090815260166020908152604091829020825160808101845281546001600160a01b039081168252600183015481169382019390935260029091015491821692810192909252600160a01b900463ffffffff16606082015290565b60606002805461052890611e1c565b600054610100900460ff16158080156109a65750600054600160ff909116105b806109c05750303b1580156109c0575060005460ff166001145b6109dc5760405162461bcd60e51b81526004016107c990611e73565b6000805460ff1916600117905580156109ff576000805461ff0019166101001790555b8015610699576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b61076f33838361122f565b6040518060600160405280602d8152602001612319602d913981565b610a793383610f02565b610a96576040516312a8eb0360e11b815260040160405180910390fd5b610aa2848484846112ce565b50505050565b60606105138260006112d9565b6001600160a01b03918216600090815260046020908152604080832093909416825291909152205460ff1690565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590610b455750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b15610b635760405163d367b64f60e01b815260040160405180910390fd5b6000610b708484846111e3565b6000818152601660205260409020600101549091506001600160a01b031615610aa257610b9c81610f79565b604051630179c42b60e51b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690632f388560906024015b600060405180830381600087803b158015610bff57600080fd5b505af1158015610c13573d6000803e3d6000fd5b5050505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590610c7f5750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b15610c9d5760405163d367b64f60e01b815260040160405180910390fd5b6000610caa8484846111e3565b6000818152601660205260409020600101549091506001600160a01b031615610aa257604051630852cd8d60e31b8152600481018290527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906342966c6890602401600060405180830381600087803b158015610d2f57600080fd5b505af1158015610d43573d6000803e3d6000fd5b50505050610aa281611434565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614801590610db25750336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614155b15610dd05760405163d367b64f60e01b815260040160405180910390fd5b6000610ddd8484846111e3565b6000818152601660205260409020600101549091506001600160a01b0316610aa257610e0b848484846114c3565b6040516340c10f1960e01b81526001600160a01b038381166004830152602482018390527f000000000000000000000000000000000000000000000000000000000000000016906340c10f1990604401610be5565b6000818152601660205260409020600101546001600160a01b03166106995760405163eab95e3b60e01b815260040160405180910390fd5b600081815260036020908152604080832080546001600160a01b0319166001600160a01b038781169182179092556016909352818420600101549151859492909116917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a45050565b600080610f0e83610888565b9050806001600160a01b0316846001600160a01b03161480610f355750610f358185610ab5565b806108ee5750836001600160a01b0316610f4e846105ab565b6001600160a01b031614949350505050565b60405163553a3f6560e11b815260040160405180910390fd5b6040518181527ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce790602001610a3d565b6000610fd37f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6001600160a01b0316036110295760405162461bcd60e51b815260206004820152601d60248201527f5555505350726f786961626c653a206e6f742075706772616461626c6500000060448201526064016107c9565b806001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061108b9190611fcf565b7f87e44dce6a0d65a5ccf441783661f5727c2624b1f0088bbe957ce2c95406b784146111055760405162461bcd60e51b815260206004820152602360248201527f5555505350726f786961626c653a206e6f7420636f6d70617469626c65206c6f60448201526267696360e81b60648201526084016107c9565b6001600160a01b038116300361115d5760405162461bcd60e51b815260206004820152601960248201527f5555505350726f786961626c653a2070726f7879206c6f6f700000000000000060448201526064016107c9565b611185817f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55565b7fe011bc04c286c344a8fcbb8de77f953da762c3e25d8cdea984147fc4168a5dcc7f87e44dce6a0d65a5ccf441783661f5727c2624b1f0088bbe957ce2c95406b784604080519182526001600160a01b038416602083015201610a3d565b60408051466020808301919091526001600160a01b03958616828401529385166060820152919093166080808301919091528351808303909101815260a0909101909252815191012090565b816001600160a01b0316836001600160a01b0316036112615760405163d3c7732960e01b815260040160405180910390fd5b6001600160a01b03838116600081815260046020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b610aa2848484610f60565b606060006112e6846108f6565b805160208201516040808401519051631cd43d1160e31b81526001600160a01b0380851660048301529283166024820152908216604482015292935090916000917f0000000000000000000000000000000000000000000000000000000000000000169063e6a1e88890606401608060405180830381865afa158015611370573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113949190611fe8565b50509150506113a16108c1565b6113b8826bffffffffffffffffffffffff166115f2565b866113df57604051806040016040528060048152602001637472756560e01b8152506113fe565b6040518060400160405280600581526020016466616c736560d81b8152505b61140789611685565b60405160200161141a9493929190612048565b604051602081830303815290604052935050505092915050565b60008181526016602081815260408084206001810180546003855283872080546001600160a01b0319908116909155959094528154851682558054909416909355600290920180546001600160c01b031916905590516001600160a01b0390911691839183907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6001600160a01b0383166114d9576114d96120d0565b816001600160a01b0316836001600160a01b0316036114fa576114fa6120d0565b6000818152601660205260409020600101546001600160a01b031615611522576115226120d0565b604080516080810182526001600160a01b038087168252858116602080840182815287841685870190815263ffffffff4281166060880190815260008a81526016909552888520975188549088166001600160a01b0319918216178955935160018901805491891691909516179093559051600290960180549251909116600160a01b026001600160c01b03199092169590941694909417939093179091559151839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a450505050565b606060006115ff83611800565b600101905060008167ffffffffffffffff81111561161f5761161f611bb4565b6040519080825280601f01601f191660200182016040528015611649576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a850494508461165357509392505050565b60606000611692836108f6565b90506116ac81600001516001600160a01b031660146118d8565b6116b5466115f2565b82600001516001600160a01b03166395d89b416040518163ffffffff1660e01b8152600401600060405180830381865afa1580156116f7573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261171f91908101906120e6565b61173784602001516001600160a01b031660146118d8565b61174f85604001516001600160a01b031660146118d8565b6117c086600001516001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015611794573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b8919061215d565b60ff166115f2565b6117d3876060015163ffffffff166115f2565b6040516020016117e99796959493929190612180565b604051602081830303815290604052915050919050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b831061183f5772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef8100000000831061186b576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc10000831061188957662386f26fc10000830492506010015b6305f5e10083106118a1576305f5e100830492506008015b61271083106118b557612710830492506004015b606483106118c7576064830492506002015b600a83106105135760010192915050565b606060006118e78360026122c1565b6118f29060026122d8565b67ffffffffffffffff81111561190a5761190a611bb4565b6040519080825280601f01601f191660200182016040528015611934576020820181803683370190505b509050600360fc1b8160008151811061194f5761194f6122eb565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811061197e5761197e6122eb565b60200101906001600160f81b031916908160001a90535060006119a28460026122c1565b6119ad9060016122d8565b90505b6001811115611a25576f181899199a1a9b1b9c1cb0b131b232b360811b85600f16601081106119e1576119e16122eb565b1a60f81b8282815181106119f7576119f76122eb565b60200101906001600160f81b031916908160001a90535060049490941c93611a1e81612301565b90506119b0565b508315611a745760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107c9565b9392505050565b600060208284031215611a8d57600080fd5b81356001600160e01b031981168114611a7457600080fd5b60005b83811015611ac0578181015183820152602001611aa8565b50506000910152565b6020815260008251806020840152611ae8816040850160208701611aa5565b601f01601f19169190910160400192915050565b600060208284031215611b0e57600080fd5b5035919050565b6001600160a01b038116811461069957600080fd5b60008060408385031215611b3d57600080fd5b8235611b4881611b15565b946020939093013593505050565b600080600060608486031215611b6b57600080fd5b8335611b7681611b15565b92506020840135611b8681611b15565b929592945050506040919091013590565b600060208284031215611ba957600080fd5b8135611a7481611b15565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715611bf357611bf3611bb4565b604052919050565b600067ffffffffffffffff821115611c1557611c15611bb4565b50601f01601f191660200190565b6000611c36611c3184611bfb565b611bca565b9050828152838383011115611c4a57600080fd5b828260208301376000602084830101529392505050565b600082601f830112611c7257600080fd5b611a7483833560208501611c23565b60008060408385031215611c9457600080fd5b823567ffffffffffffffff80821115611cac57600080fd5b611cb886838701611c61565b93506020850135915080821115611cce57600080fd5b50611cdb85828601611c61565b9150509250929050565b600080600060608486031215611cfa57600080fd5b8335611d0581611b15565b92506020840135611d1581611b15565b91506040840135611d2581611b15565b809150509250925092565b60008060408385031215611d4357600080fd5b8235611d4e81611b15565b915060208301358015158114611d6357600080fd5b809150509250929050565b60008060008060808587031215611d8457600080fd5b8435611d8f81611b15565b93506020850135611d9f81611b15565b925060408501359150606085013567ffffffffffffffff811115611dc257600080fd5b8501601f81018713611dd357600080fd5b611de287823560208401611c23565b91505092959194509250565b60008060408385031215611e0157600080fd5b8235611e0c81611b15565b91506020830135611d6381611b15565b600181811c90821680611e3057607f821691505b602082108103611e5057634e487b7160e01b600052602260045260246000fd5b50919050565b600060208284031215611e6857600080fd5b8151611a7481611b15565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b601f82111561065957600081815260208120601f850160051c81016020861015611ee85750805b601f850160051c820191505b81811015611f0757828155600101611ef4565b505050505050565b815167ffffffffffffffff811115611f2957611f29611bb4565b611f3d81611f378454611e1c565b84611ec1565b602080601f831160018114611f725760008415611f5a5750858301515b600019600386901b1c1916600185901b178555611f07565b600085815260208120601f198616915b82811015611fa157888601518255948401946001909101908401611f82565b5085821015611fbf5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060208284031215611fe157600080fd5b5051919050565b60008060008060808587031215611ffe57600080fd5b84519350602085015180600b0b811461201657600080fd5b6040860151606090960151949790965092505050565b6000815161203e818560208601611aa5565b9290920192915050565b6000855161205a818460208a01611aa5565b693f666c6f77526174653d60b01b908301908152855161208181600a840160208a01611aa5565b69266f7574676f696e673d60b01b600a929091019182015284516120ac816014840160208901611aa5565b84519101906120c2816014840160208801611aa5565b016014019695505050505050565b634e487b7160e01b600052600160045260246000fd5b6000602082840312156120f857600080fd5b815167ffffffffffffffff81111561210f57600080fd5b8201601f8101841361212057600080fd5b805161212e611c3182611bfb565b81815285602083850101111561214357600080fd5b612154826020830160208601611aa5565b95945050505050565b60006020828403121561216f57600080fd5b815160ff81168114611a7457600080fd5b6e26746f6b656e5f616464726573733d60881b8152600088516121aa81600f850160208d01611aa5565b6926636861696e5f69643d60b01b600f9184019182015288516121d4816019840160208d01611aa5565b6d26746f6b656e5f73796d626f6c3d60901b601992909101918201528751612203816027840160208c01611aa5565b672673656e6465723d60c01b60279290910191820152865161222c81602f840160208b01611aa5565b692672656365697665723d60b01b602f929091019182015261229d61229761227f61227961225d603986018b61202c565b6f26746f6b656e5f646563696d616c733d60801b815260100190565b8861202c565b6b2673746172745f646174653d60a01b8152600c0190565b8561202c565b9a9950505050505050505050565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417610513576105136122ab565b80820180821115610513576105136122ab565b634e487b7160e01b600052603260045260246000fd5b600081612310576123106122ab565b50600019019056fe68747470733a2f2f6e66742e7375706572666c7569642e66696e616e63652f6366612f76322f6765746d657461a26469706673582212202e77a71c6e8f0243db08e1d15aaa2ab4ad22bae5dc71012205fc6729d14a3ca864736f6c6343000813003300000000000000000000000085fe79b998509b77bf10a8bd4001d58475d2938600000000000000000000000016843ac25ccc58aa7960ba05f61cbb17b36b130a00000000000000000000000051f571d934c59185f13d17301a36c07a2268b81400000000000000000000000067d0efab10b390206b356ba7fb453ab56aab7480