{
  "_format": "hh-sol-artifact-1",
  "contractName": "FuseFaucetV2",
  "sourceName": "contracts/fuseFaucet/FuseFaucetV2.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "whitelistedRoot",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "relayerOrWhitelisted",
          "type": "address"
        }
      ],
      "name": "WalletTopped",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "banAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "bans",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "canTop",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "currentDay",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "dailyNewWalletsCount",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "gasPrice",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "gasRefund",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "gasTopping",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getIdentity",
      "outputs": [
        {
          "internalType": "contract IIdentityV2",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getToppingAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "goodDollar_unused",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract NameService",
          "name": "_ns",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "_gasPrice",
          "type": "uint64"
        },
        {
          "internalType": "address",
          "name": "_relayer",
          "type": "address"
        },
        {
          "internalType": "uint64",
          "name": "gweiTopping",
          "type": "uint64"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxDailyNewWallets",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxDailyToppings",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxPerWeekMultiplier",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxSwapAmount",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "minTopping",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "nameService",
      "outputs": [
        {
          "internalType": "contract NameService",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "notFirstTime",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "onTokenTransfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "perDayRoughLimit",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "relayer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint64",
          "name": "_price",
          "type": "uint64"
        }
      ],
      "name": "setGasPrice",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_gasUnits",
          "type": "uint256"
        }
      ],
      "name": "setGasTopping",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "_minTop",
          "type": "uint8"
        }
      ],
      "name": "setMinTopping",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "startTime",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_user",
          "type": "address"
        }
      ],
      "name": "topWallet",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "toppings",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_relayer",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "internalType": "contract NameService",
          "name": "_ns",
          "type": "address"
        }
      ],
      "name": "upgrade",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract NameService",
          "name": "_ns",
          "type": "address"
        }
      ],
      "name": "upgrade2",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "upgrade3",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "wallets",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "lastDayTopped",
          "type": "uint128"
        },
        {
          "internalType": "uint32",
          "name": "dailyToppingCount",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "stateMutability": "payable",
      "type": "receive"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506121db806100206000396000f3fe60806040526004361061018d5760003560e01c806315126799146101995780631ece9b12146101c15780632f5a3d15146101ee57806336afc6fa146102045780633771dcf8146102195780633e6326fc1461023b57806354fd4d501461025b5780635b61e2c1146102945780635bc758e2146102d35780635c9302c9146102e95780636bdd7242146102ff57806370c635911461031f57806378e979251461033f5780637befab10146103555780637f49f709146103795780638406c0791461039957806389b08f11146103c05780638da5cb5b1461042957806393a08de414610449578063a4c0ed3614610466578063aa31e45914610496578063aaab4c1d146104c6578063ad285cad146104f9578063c25673d514610526578063c573cb401461053b578063c5da10331461055b578063c8eb754914610593578063cce987d4146105b3578063d1c8e125146105d7578063e97eefd2146105f7578063f000999e14610617578063f83ecf9914610637578063f84b40f514610657578063fe173b971461066d57600080fd5b3661019457005b600080fd5b3480156101a557600080fd5b506101ae610694565b6040519081526020015b60405180910390f35b3480156101cd57600080fd5b50600b546101e1906001600160a01b031681565b6040516101b89190611c44565b3480156101fa57600080fd5b506101ae60025481565b34801561021057600080fd5b506101e16106bd565b34801561022557600080fd5b50610239610234366004611c70565b610743565b005b34801561024757600080fd5b506006546101e1906001600160a01b031681565b34801561026757600080fd5b50600d5461027f90600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101b8565b3480156102a057600080fd5b50600b546102bb90600160a01b90046001600160401b031681565b6040516001600160401b0390911681526020016101b8565b3480156102df57600080fd5b506101ae60035481565b3480156102f557600080fd5b506101ae60055481565b34801561030b57600080fd5b5061023961031a366004611cb0565b610d23565b34801561032b57600080fd5b5061023961033a366004611ccb565b610d79565b34801561034b57600080fd5b506101ae60045481565b34801561036157600080fd5b50600a5461027f90600160601b900463ffffffff1681565b34801561038557600080fd5b50610239610394366004611c70565b610db9565b3480156103a557600080fd5b50600c546101e190600160401b90046001600160a01b031681565b3480156103cc57600080fd5b506104056103db366004611c70565b6009602052600090815260409020546001600160801b03811690600160801b900463ffffffff1682565b604080516001600160801b03909316835263ffffffff9091166020830152016101b8565b34801561043557600080fd5b50600d546101e1906001600160a01b031681565b34801561045557600080fd5b50600a5461027f9063ffffffff1681565b34801561047257600080fd5b50610486610481366004611ce4565b610e0c565b60405190151581526020016101b8565b3480156104a257600080fd5b506104866104b1366004611c70565b60086020526000908152604090205460ff1681565b3480156104d257600080fd5b50600d546104e790600160c01b900460ff1681565b60405160ff90911681526020016101b8565b34801561050557600080fd5b506101ae610514366004611c70565b600e6020526000908152604090205481565b34801561053257600080fd5b50610239611043565b34801561054757600080fd5b50600c546102bb906001600160401b031681565b34801561056757600080fd5b506101ae610576366004611d6c565b600760209081526000928352604080842090915290825290205481565b34801561059f57600080fd5b506102396105ae366004611d9c565b6110f8565b3480156105bf57600080fd5b50600a5461027f90600160801b900463ffffffff1681565b3480156105e357600080fd5b506102396105f2366004611dbf565b611142565b34801561060357600080fd5b50610486610612366004611c70565b611326565b34801561062357600080fd5b50610239610632366004611e17565b6116ed565b34801561064357600080fd5b50610239610652366004611c70565b6117eb565b34801561066357600080fd5b506101ae60015481565b34801561067957600080fd5b50600a546102bb90600160201b90046001600160401b031681565b600a546002546000916106b891600160201b9091046001600160401b031690611e78565b905090565b60065460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa15801561071f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b89190611e95565b60005a90508160006107536106bd565b6001600160a01b0316632d0e9b46836040518263ffffffff1660e01b815260040161077e9190611c44565b602060405180830381865afa15801561079b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bf9190611e95565b90506001600160a01b038116156107d657806107d8565b815b6005549092506107e661188e565b806005541461080057600c80546001600160401b03191690555b6005546001600160a01b0384166000908152600960205260409020546001600160801b0390811691161415806108625750600a546001600160a01b03841660009081526009602052604090205463ffffffff918216600160801b909104909116105b6108a85760405162461bcd60e51b81526020600482015260126024820152716d6178206461696c7920746f7070696e677360701b60448201526064015b60405180910390fd5b6001600160a01b03831660009081526008602052604090205460ff161580156108e85750600b54600c546001600160401b03600160a01b90920482169116105b806108fb57506001600160a01b03821615155b6109565760405162461bcd60e51b815260206004820152602660248201527f55736572206e6f742077686974656c6973746564206f72206e6f742066697273604482015265742074696d6560d01b606482015260840161089f565b600060076005546109679190611ec8565b6001600160a01b038516600090815260096020526040812054600554929350909161099b916001600160801b031690611edc565b9050600781116109ab57806109ae565b60075b90508181116109bd57806109c8565b6109c8826001611eef565b90506000816109d8846001611eef565b6109e29190611edc565b90505b828111610a5a576001600160a01b03861660009081526009602052604081206001018260078110610a1857610a18611f02565b600291828204019190066010026101000a8154816001600160801b0302191690836001600160801b031602179055508080610a5290611f18565b9150506109e5565b506000805b838111610ad0576001600160a01b03871660009081526009602052604090206001018160078110610a9257610a92611f02565b600291828204019190066010029054906101000a90046001600160801b031682610abc9190611f31565b915080610ac881611f18565b915050610a5f565b50600a54600154600160601b820463ffffffff1691610b0091600160201b9091046001600160401b031690611e78565b610b0a9190611e78565b816001600160801b031610610b7e5760405162461bcd60e51b815260206004820152603460248201527f557365722077616c6c657420686173206265656e20746f7070656420746f6f206044820152736d616e792074696d65732074686973207765656b60601b606482015260840161089f565b876000610b896106bd565b6001600160a01b0316632d0e9b46836040518263ffffffff1660e01b8152600401610bb49190611c44565b602060405180830381865afa158015610bd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf59190611e95565b6001600160a01b0316141580610c1c5750600c54600160401b90046001600160a01b031633145b610c595760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b604482015260640161089f565b6001600160a01b0381166000908152600e60205260409020544211610ca95760405162461bcd60e51b815260206004820152600660248201526518985b9b995960d21b604482015260640161089f565b610cb2896118af565b505050505050505a610cc49082611edc565b610cd09061a410611eef565b600a5490915033906108fc90610cf690600160201b90046001600160401b031684611e78565b6040518115909202916000818181858888f19350505050158015610d1e573d6000803e3d6000fd5b505050565b600d546001600160a01b03163314610d4d5760405162461bcd60e51b815260040161089f90611f58565b600a80546001600160401b03909216600160201b02600160201b600160601b0319909216919091179055565b600d546001600160a01b03163314610da35760405162461bcd60e51b815260040161089f90611f58565b6002818155610db3908290611e78565b60015550565b600d546001600160a01b03163314610de35760405162461bcd60e51b815260040161089f90611f58565b610df0426203f480611eef565b6001600160a01b039091166000908152600e6020526040902055565b600a54600090600160801b900463ffffffff16841115610e595760405162461bcd60e51b8152602060048201526008602482015267736c69707061676560c01b604482015260640161089f565b6000610e6783850185611c70565b60408051600280825260608201835292935083926000926020830190803683370190505090503381600081518110610ea157610ea1611f02565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f239190611e95565b81600181518110610f3657610f36611f02565b6001600160a01b03928316602091820292909201015260405163095ea7b360e01b815290841660048201526000196024820152339063095ea7b3906044016020604051808303816000875af1158015610f93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb79190611f91565b506040516318cbafe560e01b81526001600160a01b038316906318cbafe590610fed908a9060009086908e904290600401611fb3565b6000604051808303816000875af115801561100c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110349190810190612024565b50600198975050505050505050565b60036110506001826120e1565b600d54600160a01b900463ffffffff9081169116146110815760405162461bcd60e51b815260040161089f906120fe565b600d8054600160a01b900463ffffffff1690601461109e8361212d565b91906101000a81548163ffffffff021916908363ffffffff16021790555050600a60049054906101000a90046001600160401b03166001600160401b03166002546110e99190612150565b6002818155610db39190611e78565b600d546001600160a01b031633146111225760405162461bcd60e51b815260040161089f90611f58565b600d805460ff909216600160c01b0260ff60c01b19909216919091179055565b600054610100900460ff16158080156111625750600054600160ff909116105b8061117c5750303b15801561117c575060005460ff166001145b6111df5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161089f565b6000805460ff191660011790558015611202576000805461ff0019166101001790555b600c8054600160401b600160e01b031916600160401b6001600160a01b03861602179055600a8054600160201b600160601b031916600160201b6001600160401b038781169190910291909117909155821660028181556112639190611e78565b600155600a805442600455600680546001600160a01b0319166001600160a01b03891617905563ffffffff600160601b03600160a01b03191660036501f40000000160611b01179055600b8054600160a01b600160e01b03191661027160a31b179055600d805460ff60c01b1916600f60c01b179055801561131f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000816001600160a01b03163161133b610694565b101561134957506000919050565b6000826001600160a01b03163161135e610694565b6113689190611edc565b600d54909150600160c01b900460ff16611380610694565b61138b836064611e78565b6113959190612150565b10156113a45750600092915050565b60006113ae6106bd565b6001600160a01b0316632d0e9b46856040518263ffffffff1660e01b81526004016113d99190611c44565b602060405180830381865afa1580156113f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141a9190611e95565b90506001600160a01b038116156114315780611433565b835b9350600062015180600454426114499190611edc565b6114539190612150565b6001600160a01b038616600090815260096020526040812054919250906001600160801b0380841691161415806114b057506001600160a01b0386166000908152600960205260409020546003600160801b90910463ffffffff16105b801561150a57506001600160a01b03861660009081526008602052604090205460ff161580156114f75750600b54600c546001600160401b03600160a01b90920482169116105b8061150a57506001600160a01b03831615155b6001600160a01b038716600090815260096020526040808220815160e0810192839052939450919291600101906007908285855b82829054906101000a90046001600160801b03166001600160801b031681526020019060100190602082600f0104928301926001038202915080841161153e5790505050505050905060006007846115969190611ec8565b6001600160a01b038916600090815260096020526040812054919250906115c6906001600160801b031686611edc565b9050600781116115d657806115d9565b60075b90508181116115e857806115f3565b6115f3826001611eef565b9050600081611603846001611eef565b61160d9190611edc565b90505b82811161165057600084826007811061162b5761162b611f02565b6001600160801b0390921660209290920201528061164881611f18565b915050611610565b506000805b8381116116915784816007811061166e5761166e611f02565b602002015161167d9083611f31565b91508061168981611f18565b915050611655565b508480156116df5750600a54600154600160601b820463ffffffff16916116c991600160201b9091046001600160401b031690611e78565b6116d39190611e78565b816001600160801b0316105b9a9950505050505050505050565b60016116f981806120e1565b600d54600160a01b900463ffffffff90811691161461172a5760405162461bcd60e51b815260040161089f906120fe565b600d8054600160a01b900463ffffffff169060146117478361212d565b82546101009290920a63ffffffff81810219909316919092169190910217905550600d80546001600160a01b0319166001600160a01b038516179055600b54600160a01b90046001600160401b03166000036117b857600b8054600160a01b600160e01b03191661027160a31b1790555b600c8054600160401b600160e01b031916600160401b6001600160a01b038716021790556117e5826117eb565b50505050565b60026117f86001826120e1565b600d54600160a01b900463ffffffff9081169116146118295760405162461bcd60e51b815260040161089f906120fe565b600d8054600160a01b900463ffffffff169060146118468361212d565b82546101009290920a63ffffffff81810219909316919092169190910217905550600680546001600160a01b0319166001600160a01b03841617905561188a611043565b5050565b62015180600454426118a09190611edc565b6118aa9190612150565b600555565b8060006118ba6106bd565b6001600160a01b0316632d0e9b46846040518263ffffffff1660e01b81526004016118e59190611c44565b602060405180830381865afa158015611902573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119269190611e95565b90506001600160a01b0381161561193d578061193f565b825b92506000836001600160a01b031631611956610694565b6119609190611edc565b600d54909150600160c01b900460ff16611978610694565b611983836064611e78565b61198d9190612150565b10156119c75760405162461bcd60e51b815260206004820152600960248201526806c6f7720746f546f760bc1b604482015260640161089f565b600060076005546119d89190611ec8565b6005546001600160a01b0387166000908152600960205260409020549192506001600160801b03908116911603611a65576001600160a01b0385166000908152600960205260409020805460019190601090611a42908490600160801b900463ffffffff16612164565b92506101000a81548163ffffffff021916908363ffffffff160217905550611a92565b6001600160a01b0385166000908152600960205260409020805463ffffffff60801b1916600160801b1790555b6005546001600160a01b038616600090815260096020526040902080546001600160801b0319166001600160801b0390921691909117815582906001018260078110611ae057611ae0611f02565b600291828204019190066010028282829054906101000a90046001600160801b0316611b0c9190611f31565b82546001600160801b039182166101009390930a9283029190920219909116179055506001600160a01b03851660009081526008602052604090205460ff16158015611b5f57506001600160a01b038316155b15611ba357600c80546001600160401b0316906000611b7d83612181565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b6001600160a01b03808616600090815260086020526040808220805460ff19166001179055519186169184156108fc0291859190818181858888f19350505050158015611bf4573d6000803e3d6000fd5b50604080518381526001600160a01b0385811660208301523392908716917f7872034fbcc87890e73d66eac55389e0ffdba157b89a73bd2011157ebac1d66e910160405180910390a35050505050565b6001600160a01b0391909116815260200190565b6001600160a01b0381168114611c6d57600080fd5b50565b600060208284031215611c8257600080fd5b8135611c8d81611c58565b9392505050565b80356001600160401b0381168114611cab57600080fd5b919050565b600060208284031215611cc257600080fd5b611c8d82611c94565b600060208284031215611cdd57600080fd5b5035919050565b60008060008060608587031215611cfa57600080fd5b8435611d0581611c58565b93506020850135925060408501356001600160401b0380821115611d2857600080fd5b818701915087601f830112611d3c57600080fd5b813581811115611d4b57600080fd5b886020828501011115611d5d57600080fd5b95989497505060200194505050565b60008060408385031215611d7f57600080fd5b823591506020830135611d9181611c58565b809150509250929050565b600060208284031215611dae57600080fd5b813560ff81168114611c8d57600080fd5b60008060008060808587031215611dd557600080fd5b8435611de081611c58565b9350611dee60208601611c94565b92506040850135611dfe81611c58565b9150611e0c60608601611c94565b905092959194509250565b600080600060608486031215611e2c57600080fd5b8335611e3781611c58565b92506020840135611e4781611c58565b91506040840135611e5781611c58565b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611e8f57611e8f611e62565b92915050565b600060208284031215611ea757600080fd5b8151611c8d81611c58565b634e487b7160e01b600052601260045260246000fd5b600082611ed757611ed7611eb2565b500690565b81810381811115611e8f57611e8f611e62565b80820180821115611e8f57611e8f611e62565b634e487b7160e01b600052603260045260246000fd5b600060018201611f2a57611f2a611e62565b5060010190565b6001600160801b03818116838216019080821115611f5157611f51611e62565b5092915050565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215611fa357600080fd5b81518015158114611c8d57600080fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120035784516001600160a01b031683529383019391830191600101611fde565b50506001600160a01b03969096166060850152505050608001529392505050565b6000602080838503121561203757600080fd5b82516001600160401b038082111561204e57600080fd5b818501915085601f83011261206257600080fd5b81518181111561207457612074611f7b565b8060051b604051601f19603f8301168101818110858211171561209957612099611f7b565b6040529182528482019250838101850191888311156120b757600080fd5b938501935b828510156120d5578451845293850193928501926120bc565b98975050505050505050565b63ffffffff828116828216039080821115611f5157611f51611e62565b6020808252601590820152743bb937b733903ab833b930b232903b32b939b4b7b760591b604082015260600190565b600063ffffffff80831681810361214657612146611e62565b6001019392505050565b60008261215f5761215f611eb2565b500490565b63ffffffff818116838216019080821115611f5157611f51611e62565b60006001600160401b038281166002600160401b0319810161214657612146611e6256fea2646970667358221220ac2bad2fb462df9850451a920ca418093b3e066945ffdae6cf77b707e939d4b464736f6c63430008130033",
  "deployedBytecode": "0x60806040526004361061018d5760003560e01c806315126799146101995780631ece9b12146101c15780632f5a3d15146101ee57806336afc6fa146102045780633771dcf8146102195780633e6326fc1461023b57806354fd4d501461025b5780635b61e2c1146102945780635bc758e2146102d35780635c9302c9146102e95780636bdd7242146102ff57806370c635911461031f57806378e979251461033f5780637befab10146103555780637f49f709146103795780638406c0791461039957806389b08f11146103c05780638da5cb5b1461042957806393a08de414610449578063a4c0ed3614610466578063aa31e45914610496578063aaab4c1d146104c6578063ad285cad146104f9578063c25673d514610526578063c573cb401461053b578063c5da10331461055b578063c8eb754914610593578063cce987d4146105b3578063d1c8e125146105d7578063e97eefd2146105f7578063f000999e14610617578063f83ecf9914610637578063f84b40f514610657578063fe173b971461066d57600080fd5b3661019457005b600080fd5b3480156101a557600080fd5b506101ae610694565b6040519081526020015b60405180910390f35b3480156101cd57600080fd5b50600b546101e1906001600160a01b031681565b6040516101b89190611c44565b3480156101fa57600080fd5b506101ae60025481565b34801561021057600080fd5b506101e16106bd565b34801561022557600080fd5b50610239610234366004611c70565b610743565b005b34801561024757600080fd5b506006546101e1906001600160a01b031681565b34801561026757600080fd5b50600d5461027f90600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101b8565b3480156102a057600080fd5b50600b546102bb90600160a01b90046001600160401b031681565b6040516001600160401b0390911681526020016101b8565b3480156102df57600080fd5b506101ae60035481565b3480156102f557600080fd5b506101ae60055481565b34801561030b57600080fd5b5061023961031a366004611cb0565b610d23565b34801561032b57600080fd5b5061023961033a366004611ccb565b610d79565b34801561034b57600080fd5b506101ae60045481565b34801561036157600080fd5b50600a5461027f90600160601b900463ffffffff1681565b34801561038557600080fd5b50610239610394366004611c70565b610db9565b3480156103a557600080fd5b50600c546101e190600160401b90046001600160a01b031681565b3480156103cc57600080fd5b506104056103db366004611c70565b6009602052600090815260409020546001600160801b03811690600160801b900463ffffffff1682565b604080516001600160801b03909316835263ffffffff9091166020830152016101b8565b34801561043557600080fd5b50600d546101e1906001600160a01b031681565b34801561045557600080fd5b50600a5461027f9063ffffffff1681565b34801561047257600080fd5b50610486610481366004611ce4565b610e0c565b60405190151581526020016101b8565b3480156104a257600080fd5b506104866104b1366004611c70565b60086020526000908152604090205460ff1681565b3480156104d257600080fd5b50600d546104e790600160c01b900460ff1681565b60405160ff90911681526020016101b8565b34801561050557600080fd5b506101ae610514366004611c70565b600e6020526000908152604090205481565b34801561053257600080fd5b50610239611043565b34801561054757600080fd5b50600c546102bb906001600160401b031681565b34801561056757600080fd5b506101ae610576366004611d6c565b600760209081526000928352604080842090915290825290205481565b34801561059f57600080fd5b506102396105ae366004611d9c565b6110f8565b3480156105bf57600080fd5b50600a5461027f90600160801b900463ffffffff1681565b3480156105e357600080fd5b506102396105f2366004611dbf565b611142565b34801561060357600080fd5b50610486610612366004611c70565b611326565b34801561062357600080fd5b50610239610632366004611e17565b6116ed565b34801561064357600080fd5b50610239610652366004611c70565b6117eb565b34801561066357600080fd5b506101ae60015481565b34801561067957600080fd5b50600a546102bb90600160201b90046001600160401b031681565b600a546002546000916106b891600160201b9091046001600160401b031690611e78565b905090565b60065460405163bf40fac160e01b81526020600482015260086024820152674944454e5449545960c01b60448201526000916001600160a01b03169063bf40fac190606401602060405180830381865afa15801561071f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106b89190611e95565b60005a90508160006107536106bd565b6001600160a01b0316632d0e9b46836040518263ffffffff1660e01b815260040161077e9190611c44565b602060405180830381865afa15801561079b573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107bf9190611e95565b90506001600160a01b038116156107d657806107d8565b815b6005549092506107e661188e565b806005541461080057600c80546001600160401b03191690555b6005546001600160a01b0384166000908152600960205260409020546001600160801b0390811691161415806108625750600a546001600160a01b03841660009081526009602052604090205463ffffffff918216600160801b909104909116105b6108a85760405162461bcd60e51b81526020600482015260126024820152716d6178206461696c7920746f7070696e677360701b60448201526064015b60405180910390fd5b6001600160a01b03831660009081526008602052604090205460ff161580156108e85750600b54600c546001600160401b03600160a01b90920482169116105b806108fb57506001600160a01b03821615155b6109565760405162461bcd60e51b815260206004820152602660248201527f55736572206e6f742077686974656c6973746564206f72206e6f742066697273604482015265742074696d6560d01b606482015260840161089f565b600060076005546109679190611ec8565b6001600160a01b038516600090815260096020526040812054600554929350909161099b916001600160801b031690611edc565b9050600781116109ab57806109ae565b60075b90508181116109bd57806109c8565b6109c8826001611eef565b90506000816109d8846001611eef565b6109e29190611edc565b90505b828111610a5a576001600160a01b03861660009081526009602052604081206001018260078110610a1857610a18611f02565b600291828204019190066010026101000a8154816001600160801b0302191690836001600160801b031602179055508080610a5290611f18565b9150506109e5565b506000805b838111610ad0576001600160a01b03871660009081526009602052604090206001018160078110610a9257610a92611f02565b600291828204019190066010029054906101000a90046001600160801b031682610abc9190611f31565b915080610ac881611f18565b915050610a5f565b50600a54600154600160601b820463ffffffff1691610b0091600160201b9091046001600160401b031690611e78565b610b0a9190611e78565b816001600160801b031610610b7e5760405162461bcd60e51b815260206004820152603460248201527f557365722077616c6c657420686173206265656e20746f7070656420746f6f206044820152736d616e792074696d65732074686973207765656b60601b606482015260840161089f565b876000610b896106bd565b6001600160a01b0316632d0e9b46836040518263ffffffff1660e01b8152600401610bb49190611c44565b602060405180830381865afa158015610bd1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bf59190611e95565b6001600160a01b0316141580610c1c5750600c54600160401b90046001600160a01b031633145b610c595760405162461bcd60e51b815260206004820152600e60248201526d1b9bdd08185d5d1a1bdc9a5e995960921b604482015260640161089f565b6001600160a01b0381166000908152600e60205260409020544211610ca95760405162461bcd60e51b815260206004820152600660248201526518985b9b995960d21b604482015260640161089f565b610cb2896118af565b505050505050505a610cc49082611edc565b610cd09061a410611eef565b600a5490915033906108fc90610cf690600160201b90046001600160401b031684611e78565b6040518115909202916000818181858888f19350505050158015610d1e573d6000803e3d6000fd5b505050565b600d546001600160a01b03163314610d4d5760405162461bcd60e51b815260040161089f90611f58565b600a80546001600160401b03909216600160201b02600160201b600160601b0319909216919091179055565b600d546001600160a01b03163314610da35760405162461bcd60e51b815260040161089f90611f58565b6002818155610db3908290611e78565b60015550565b600d546001600160a01b03163314610de35760405162461bcd60e51b815260040161089f90611f58565b610df0426203f480611eef565b6001600160a01b039091166000908152600e6020526040902055565b600a54600090600160801b900463ffffffff16841115610e595760405162461bcd60e51b8152602060048201526008602482015267736c69707061676560c01b604482015260640161089f565b6000610e6783850185611c70565b60408051600280825260608201835292935083926000926020830190803683370190505090503381600081518110610ea157610ea1611f02565b60200260200101906001600160a01b031690816001600160a01b031681525050816001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610eff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f239190611e95565b81600181518110610f3657610f36611f02565b6001600160a01b03928316602091820292909201015260405163095ea7b360e01b815290841660048201526000196024820152339063095ea7b3906044016020604051808303816000875af1158015610f93573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fb79190611f91565b506040516318cbafe560e01b81526001600160a01b038316906318cbafe590610fed908a9060009086908e904290600401611fb3565b6000604051808303816000875af115801561100c573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526110349190810190612024565b50600198975050505050505050565b60036110506001826120e1565b600d54600160a01b900463ffffffff9081169116146110815760405162461bcd60e51b815260040161089f906120fe565b600d8054600160a01b900463ffffffff1690601461109e8361212d565b91906101000a81548163ffffffff021916908363ffffffff16021790555050600a60049054906101000a90046001600160401b03166001600160401b03166002546110e99190612150565b6002818155610db39190611e78565b600d546001600160a01b031633146111225760405162461bcd60e51b815260040161089f90611f58565b600d805460ff909216600160c01b0260ff60c01b19909216919091179055565b600054610100900460ff16158080156111625750600054600160ff909116105b8061117c5750303b15801561117c575060005460ff166001145b6111df5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b606482015260840161089f565b6000805460ff191660011790558015611202576000805461ff0019166101001790555b600c8054600160401b600160e01b031916600160401b6001600160a01b03861602179055600a8054600160201b600160601b031916600160201b6001600160401b038781169190910291909117909155821660028181556112639190611e78565b600155600a805442600455600680546001600160a01b0319166001600160a01b03891617905563ffffffff600160601b03600160a01b03191660036501f40000000160611b01179055600b8054600160a01b600160e01b03191661027160a31b179055600d805460ff60c01b1916600f60c01b179055801561131f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000816001600160a01b03163161133b610694565b101561134957506000919050565b6000826001600160a01b03163161135e610694565b6113689190611edc565b600d54909150600160c01b900460ff16611380610694565b61138b836064611e78565b6113959190612150565b10156113a45750600092915050565b60006113ae6106bd565b6001600160a01b0316632d0e9b46856040518263ffffffff1660e01b81526004016113d99190611c44565b602060405180830381865afa1580156113f6573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141a9190611e95565b90506001600160a01b038116156114315780611433565b835b9350600062015180600454426114499190611edc565b6114539190612150565b6001600160a01b038616600090815260096020526040812054919250906001600160801b0380841691161415806114b057506001600160a01b0386166000908152600960205260409020546003600160801b90910463ffffffff16105b801561150a57506001600160a01b03861660009081526008602052604090205460ff161580156114f75750600b54600c546001600160401b03600160a01b90920482169116105b8061150a57506001600160a01b03831615155b6001600160a01b038716600090815260096020526040808220815160e0810192839052939450919291600101906007908285855b82829054906101000a90046001600160801b03166001600160801b031681526020019060100190602082600f0104928301926001038202915080841161153e5790505050505050905060006007846115969190611ec8565b6001600160a01b038916600090815260096020526040812054919250906115c6906001600160801b031686611edc565b9050600781116115d657806115d9565b60075b90508181116115e857806115f3565b6115f3826001611eef565b9050600081611603846001611eef565b61160d9190611edc565b90505b82811161165057600084826007811061162b5761162b611f02565b6001600160801b0390921660209290920201528061164881611f18565b915050611610565b506000805b8381116116915784816007811061166e5761166e611f02565b602002015161167d9083611f31565b91508061168981611f18565b915050611655565b508480156116df5750600a54600154600160601b820463ffffffff16916116c991600160201b9091046001600160401b031690611e78565b6116d39190611e78565b816001600160801b0316105b9a9950505050505050505050565b60016116f981806120e1565b600d54600160a01b900463ffffffff90811691161461172a5760405162461bcd60e51b815260040161089f906120fe565b600d8054600160a01b900463ffffffff169060146117478361212d565b82546101009290920a63ffffffff81810219909316919092169190910217905550600d80546001600160a01b0319166001600160a01b038516179055600b54600160a01b90046001600160401b03166000036117b857600b8054600160a01b600160e01b03191661027160a31b1790555b600c8054600160401b600160e01b031916600160401b6001600160a01b038716021790556117e5826117eb565b50505050565b60026117f86001826120e1565b600d54600160a01b900463ffffffff9081169116146118295760405162461bcd60e51b815260040161089f906120fe565b600d8054600160a01b900463ffffffff169060146118468361212d565b82546101009290920a63ffffffff81810219909316919092169190910217905550600680546001600160a01b0319166001600160a01b03841617905561188a611043565b5050565b62015180600454426118a09190611edc565b6118aa9190612150565b600555565b8060006118ba6106bd565b6001600160a01b0316632d0e9b46846040518263ffffffff1660e01b81526004016118e59190611c44565b602060405180830381865afa158015611902573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119269190611e95565b90506001600160a01b0381161561193d578061193f565b825b92506000836001600160a01b031631611956610694565b6119609190611edc565b600d54909150600160c01b900460ff16611978610694565b611983836064611e78565b61198d9190612150565b10156119c75760405162461bcd60e51b815260206004820152600960248201526806c6f7720746f546f760bc1b604482015260640161089f565b600060076005546119d89190611ec8565b6005546001600160a01b0387166000908152600960205260409020549192506001600160801b03908116911603611a65576001600160a01b0385166000908152600960205260409020805460019190601090611a42908490600160801b900463ffffffff16612164565b92506101000a81548163ffffffff021916908363ffffffff160217905550611a92565b6001600160a01b0385166000908152600960205260409020805463ffffffff60801b1916600160801b1790555b6005546001600160a01b038616600090815260096020526040902080546001600160801b0319166001600160801b0390921691909117815582906001018260078110611ae057611ae0611f02565b600291828204019190066010028282829054906101000a90046001600160801b0316611b0c9190611f31565b82546001600160801b039182166101009390930a9283029190920219909116179055506001600160a01b03851660009081526008602052604090205460ff16158015611b5f57506001600160a01b038316155b15611ba357600c80546001600160401b0316906000611b7d83612181565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b6001600160a01b03808616600090815260086020526040808220805460ff19166001179055519186169184156108fc0291859190818181858888f19350505050158015611bf4573d6000803e3d6000fd5b50604080518381526001600160a01b0385811660208301523392908716917f7872034fbcc87890e73d66eac55389e0ffdba157b89a73bd2011157ebac1d66e910160405180910390a35050505050565b6001600160a01b0391909116815260200190565b6001600160a01b0381168114611c6d57600080fd5b50565b600060208284031215611c8257600080fd5b8135611c8d81611c58565b9392505050565b80356001600160401b0381168114611cab57600080fd5b919050565b600060208284031215611cc257600080fd5b611c8d82611c94565b600060208284031215611cdd57600080fd5b5035919050565b60008060008060608587031215611cfa57600080fd5b8435611d0581611c58565b93506020850135925060408501356001600160401b0380821115611d2857600080fd5b818701915087601f830112611d3c57600080fd5b813581811115611d4b57600080fd5b886020828501011115611d5d57600080fd5b95989497505060200194505050565b60008060408385031215611d7f57600080fd5b823591506020830135611d9181611c58565b809150509250929050565b600060208284031215611dae57600080fd5b813560ff81168114611c8d57600080fd5b60008060008060808587031215611dd557600080fd5b8435611de081611c58565b9350611dee60208601611c94565b92506040850135611dfe81611c58565b9150611e0c60608601611c94565b905092959194509250565b600080600060608486031215611e2c57600080fd5b8335611e3781611c58565b92506020840135611e4781611c58565b91506040840135611e5781611c58565b809150509250925092565b634e487b7160e01b600052601160045260246000fd5b8082028115828204841417611e8f57611e8f611e62565b92915050565b600060208284031215611ea757600080fd5b8151611c8d81611c58565b634e487b7160e01b600052601260045260246000fd5b600082611ed757611ed7611eb2565b500690565b81810381811115611e8f57611e8f611e62565b80820180821115611e8f57611e8f611e62565b634e487b7160e01b600052603260045260246000fd5b600060018201611f2a57611f2a611e62565b5060010190565b6001600160801b03818116838216019080821115611f5157611f51611e62565b5092915050565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b634e487b7160e01b600052604160045260246000fd5b600060208284031215611fa357600080fd5b81518015158114611c8d57600080fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156120035784516001600160a01b031683529383019391830191600101611fde565b50506001600160a01b03969096166060850152505050608001529392505050565b6000602080838503121561203757600080fd5b82516001600160401b038082111561204e57600080fd5b818501915085601f83011261206257600080fd5b81518181111561207457612074611f7b565b8060051b604051601f19603f8301168101818110858211171561209957612099611f7b565b6040529182528482019250838101850191888311156120b757600080fd5b938501935b828510156120d5578451845293850193928501926120bc565b98975050505050505050565b63ffffffff828116828216039080821115611f5157611f51611e62565b6020808252601590820152743bb937b733903ab833b930b232903b32b939b4b7b760591b604082015260600190565b600063ffffffff80831681810361214657612146611e62565b6001019392505050565b60008261215f5761215f611eb2565b500490565b63ffffffff818116838216019080821115611f5157611f51611e62565b60006001600160401b038281166002600160401b0319810161214657612146611e6256fea2646970667358221220ac2bad2fb462df9850451a920ca418093b3e066945ffdae6cf77b707e939d4b464736f6c63430008130033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
