{
  "_format": "hh-sol-artifact-1",
  "contractName": "FlareDaemon",
  "sourceName": "contracts/genesis/implementation/FlareDaemon.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "theContract",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "atBlock",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "theMessage",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "gasConsumed",
          "type": "uint256"
        }
      ],
      "name": "ContractDaemonizeErrored",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "theContract",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "gasConsumed",
          "type": "uint256"
        }
      ],
      "name": "ContractDaemonized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "theContract",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "blockHoldoffsRemaining",
          "type": "uint256"
        }
      ],
      "name": "ContractHeldOff",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "numberOfSkippedConstracts",
          "type": "uint256"
        }
      ],
      "name": "ContractsSkippedOutOfGas",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "proposedGovernance",
          "type": "address"
        }
      ],
      "name": "GovernanceProposed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "oldGovernance",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newGoveranance",
          "type": "address"
        }
      ],
      "name": "GovernanceUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "contract IInflationGenesis",
          "name": "theNewContract",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "contract IInflationGenesis",
          "name": "theOldContract",
          "type": "address"
        }
      ],
      "name": "InflationSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountWei",
          "type": "uint256"
        }
      ],
      "name": "MintingReceived",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountWei",
          "type": "uint256"
        }
      ],
      "name": "MintingRequestReceived",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountWei",
          "type": "uint256"
        }
      ],
      "name": "MintingRequestTriggered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountWei",
          "type": "uint256"
        }
      ],
      "name": "MintingWithdrawn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "contract IFlareDaemonize",
          "name": "theContract",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "add",
          "type": "bool"
        }
      ],
      "name": "RegistrationUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amountWei",
          "type": "uint256"
        }
      ],
      "name": "SelfDestructReceived",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "blockHoldoff",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "errorData",
      "outputs": [
        {
          "internalType": "uint192",
          "name": "totalDaemonizedErrors",
          "type": "uint192"
        },
        {
          "internalType": "uint64",
          "name": "lastErrorTypeIndex",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getDaemonizedContractsData",
      "outputs": [
        {
          "internalType": "contract IFlareDaemonize[]",
          "name": "_daemonizeContracts",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_gasLimits",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_blockHoldoffsRemaining",
          "type": "uint256[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getNextMintRequestAllowedTs",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "governance",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "inflation",
      "outputs": [
        {
          "internalType": "contract IInflationGenesis",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "initialise",
      "outputs": [],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "initialiseFixedAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lastMintRequestTs",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "lastUpdateMaxMintRequestTs",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxMintingRequestWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "proposeGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "proposedGovernance",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "contract IFlareDaemonize",
              "name": "daemonizedContract",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "gasLimit",
              "type": "uint256"
            }
          ],
          "internalType": "struct FlareDaemon.Registration[]",
          "name": "_registrations",
          "type": "tuple[]"
        }
      ],
      "name": "registerToDaemonize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amountWei",
          "type": "uint256"
        }
      ],
      "name": "requestMinting",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_blockHoldoff",
          "type": "uint256"
        }
      ],
      "name": "setBlockHoldoff",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract IInflationGenesis",
          "name": "_inflation",
          "type": "address"
        }
      ],
      "name": "setInflation",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_maxMintingRequestWei",
          "type": "uint256"
        }
      ],
      "name": "setMaxMintingRequest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "startIndex",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "numErrorTypesToShow",
          "type": "uint256"
        }
      ],
      "name": "showDaemonizedErrors",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "_lastErrorBlock",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_numErrors",
          "type": "uint256[]"
        },
        {
          "internalType": "string[]",
          "name": "_errorString",
          "type": "string[]"
        },
        {
          "internalType": "address[]",
          "name": "_erroringContract",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_totalDaemonizedErrors",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "showLastDaemonizedError",
      "outputs": [
        {
          "internalType": "uint256[]",
          "name": "_lastErrorBlock",
          "type": "uint256[]"
        },
        {
          "internalType": "uint256[]",
          "name": "_numErrors",
          "type": "uint256[]"
        },
        {
          "internalType": "string[]",
          "name": "_errorString",
          "type": "string[]"
        },
        {
          "internalType": "address[]",
          "name": "_erroringContract",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "_totalDaemonizedErrors",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "systemLastTriggeredAt",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalMintingReceivedWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalMintingRequestedWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalMintingWithdrawnWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSelfDestructReceivedWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "transferGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "trigger",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_toMintWei",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unregisterAll",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b506128c0806100206000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c80638be2fb8611610104578063d38bfff4116100a2578063e9de7d6011610071578063e9de7d6014610322578063ecdda0dd14610335578063ed21b6e414610348578063ee323c921461035f576101cf565b8063d38bfff4146102e9578063d48a38df146102fc578063dded1b4714610304578063e371aef01461030c576101cf565b8063a6817ace116100de578063a6817ace146102be578063be0522e0146102c6578063c373a08e146102ce578063c9f960eb146102e1576101cf565b80638be2fb861461029b5780638ccf77a0146102a35780639d6a890f146102ab576101cf565b806362da19a511610171578063689c49991161014b578063689c49991461026557806372993615146102785780637fec8d3814610280578063870196b814610288576101cf565b806362da19a51461023c578063639031431461024457806363d4a53a1461024c576101cf565b80635042916c116101ad5780635042916c146102025780635aa6e675146102175780635d36b1901461022c57806360f7ac9714610234576101cf565b806310663750146101d45780631d76dea1146101f25780634f6a77b5146101fa575b600080fd5b6101dc610372565b6040516101e991906127a1565b60405180910390f35b6101dc610378565b6101dc61037e565b61021561021036600461249c565b610384565b005b61021f6103da565b6040516101e99190612592565b6102156103e9565b61021f6104ab565b6101dc6104ba565b6101dc6104c0565b6102546104d0565b6040516101e9959493929190612698565b61021561027336600461240d565b61050b565b6101dc61083a565b6101dc610840565b61021561029636600461249c565b6108eb565b6101dc610a3b565b610215610a41565b6102156102b93660046123f1565b610a9c565b6101dc610aa1565b61021f610aa7565b6102156102dc3660046123f1565b610ab6565b61021f610b5b565b6102156102f73660046123f1565b610b9a565b6101dc610c5c565b6101dc610c62565b610314610c68565b6040516101e992919061277f565b61021561033036600461249c565b610c89565b6102546103433660046124b4565b610dc2565b61035061111f565b6040516101e993929190612623565b61021561036d3660046123f1565b6112e4565b60055481565b60095481565b60085481565b6000546001600160a01b031633146103d5576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b600c55565b6000546001600160a01b031681565b6001546001600160a01b03163314610438576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd0818db185a5b585a5b9d609a1b604482015290519081900360640190fd5b600054600154604080516001600160a01b03938416815292909116602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6001546001600160a01b031681565b60045481565b60006104ca6113fb565b90505b90565b600b546060908190819081906000906104fa90600160c01b90046001600160401b03166001610dc2565b945094509450945094509091929394565b6000546001600160a01b0316331461055c576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b604080518082019091526008815267746f6f206d616e7960c01b60208201528190600a8211156105a85760405162461bcd60e51b815260040161059f919061276c565b60405180910390fd5b506105b1611406565b60005b818110156108345760008484838181106105ca57fe5b6105e092602060409092020190810191506123f1565b6001600160a01b031614156040518060400160405280600c81526020016b61646472657373207a65726f60a01b8152509061062e5760405162461bcd60e51b815260040161059f919061276c565b5060105460005b818110156106d7576010818154811061064a57fe5b6000918252602090912001546001600160a01b031686868581811061066b57fe5b61068192602060409092020190810191506123f1565b6001600160a01b031614156040518060400160405280600b81526020016a647570206164647265737360a81b815250906106ce5760405162461bcd60e51b815260040161059f919061276c565b50600101610635565b5060108585848181106106e657fe5b6106fc92602060409092020190810191506123f1565b81546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b0390921691909117905584848381811061073a57fe5b905060400201602001356011600087878681811061075457fe5b61076a92602060409092020190810191506123f1565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000601260008787868181106107a057fe5b6107b692602060409092020190810191506123f1565b6001600160a01b031681526020810191909152604001600020557f86d03f430c7616021073d7a71766f632f1ce19f289aa989534d9f4732253eb598585848181106107fd57fe5b61081392602060409092020190810191506123f1565b6001604051610823929190612737565b60405180910390a1506001016105b4565b50505050565b60075481565b6002546000906001600160a01b031661088557610885306040518060400160405280600e81526020016d696e666c6174696f6e207a65726f60901b81525060006114b6565b60026001609c1b01331461089857600080fd5b6108a061167a565b905060006108ac611ee5565b90504781146108e7576108e7306040518060400160405280600e81526020016d6f7574206f662062616c616e636560901b81525060006114b6565b5090565b6000546001600160a01b0316331461093c576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b60085461094c90606e6064611f0a565b811115604051806040016040528060118152602001700dac2f040dad2dce840e8dede40d0d2ced607b1b815250906109975760405162461bcd60e51b815260040161059f919061276c565b5060408051808201909152601081526f6d6178206d696e74206973207a65726f60801b6020820152816109dd5760405162461bcd60e51b815260040161059f919061276c565b5062015180600a54014211604051806040016040528060128152602001711d1a5b594819d85c081d1bdbc81cda1bdc9d60721b81525090610a315760405162461bcd60e51b815260040161059f919061276c565b5060085542600a55565b60035481565b6000546001600160a01b03163314610a92576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b610a9a611406565b565bfe5b50565b600a5481565b6002546001600160a01b031681565b6000546001600160a01b03163314610b07576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f1f95fb40be3a947982072902a887b521248d1d8931a39eb38f84f4d6fd758b699181900360200190a150565b600f5460009060ff16610b8857600f805460ff191660011790556000610b7f612012565b91506104cd9050565b506000546001600160a01b03166104cd565b6000546001600160a01b03163314610beb576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b600c5481565b60065481565b600b546001600160c01b03811690600160c01b90046001600160401b031682565b60025460408051808201909152600d81526c3737ba1034b7333630ba34b7b760991b602082015233916001600160a01b03168214610cda5760405162461bcd60e51b815260040161059f919061276c565b5060085482111560405180604001604052806007815260200166746f6f2062696760c81b81525090610d1f5760405162461bcd60e51b815260040161059f919061276c565b5042610d296113fb565b10604051806040016040528060098152602001683a37b79037b33a32b760b91b81525090610d6a5760405162461bcd60e51b815260040161059f919061276c565b508115610dbe5742600955600454610d829083612032565b6004556040517f4c4f1efc376f31abeb51b72c5f9ed81cf4016591312bb02337e58149dcfaaab490610db59084906127a1565b60405180910390a15b5050565b606080606080600060148054905087106040518060400160405280601081526020016f0e6e8c2e4e840d2dcc8caf040d0d2ced60831b81525090610e195760405162461bcd60e51b815260040161059f919061276c565b506014546000908888011115610e3457601454889003610e36565b865b9050806001600160401b0381118015610e4e57600080fd5b50604051908082528060200260200182016040528015610e78578160200160208202803683370190505b509550806001600160401b0381118015610e9157600080fd5b50604051908082528060200260200182016040528015610ebb578160200160208202803683370190505b509450806001600160401b0381118015610ed457600080fd5b50604051908082528060200260200182016040528015610f0857816020015b6060815260200190600190039081610ef35790505b509350806001600160401b0381118015610f2157600080fd5b50604051908082528060200260200182016040528015610f4b578160200160208202803683370190505b50925060005b818110156111035760006014828b0181548110610f6a57fe5b6000918252602080832090910154808352601390915260409091205489519192506001600160c01b031690899084908110610fa157fe5b6020026020010181815250506013600082815260200190815260200160002060000160189054906101000a90046001600160401b03166001600160401b0316878381518110610fec57fe5b6020908102919091018101919091526000828152601382526040908190206002908101805483516001821615610100026000190190911692909204601f810185900485028301850190935282825290929091908301828280156110905780601f1061106557610100808354040283529160200191611090565b820191906000526020600020905b81548152906001019060200180831161107357829003601f168201915b50505050508683815181106110a157fe5b60200260200101819052506013600082815260200190815260200160002060010160009054906101000a90046001600160a01b03168583815181106110e257fe5b6001600160a01b039092166020928302919091019091015250600101610f51565b5050600b549497939650919450926001600160c01b0316919050565b60105460609081908190806001600160401b038111801561113f57600080fd5b50604051908082528060200260200182016040528015611169578160200160208202803683370190505b509350806001600160401b038111801561118257600080fd5b506040519080825280602002602001820160405280156111ac578160200160208202803683370190505b509250806001600160401b03811180156111c557600080fd5b506040519080825280602002602001820160405280156111ef578160200160208202803683370190505b50915060005b818110156112dd5760006010828154811061120c57fe5b9060005260206000200160009054906101000a90046001600160a01b031690508086838151811061123957fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060116000826001600160a01b03166001600160a01b031681526020019081526020016000205485838151811061128b57fe5b60200260200101818152505060126000826001600160a01b03166001600160a01b03168152602001908152602001600020548483815181106112c957fe5b6020908102919091010152506001016111f5565b5050909192565b6000546001600160a01b03163314611335576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b60408051808201909152600e81526d696e666c6174696f6e207a65726f60901b60208201526001600160a01b0382166113815760405162461bcd60e51b815260040161059f919061276c565b506002546040517f4bdd1012a7d55ed9afad8675a125e1b68c7c15f712c0f3d5cddac69c3b979805916113bf9184916001600160a01b031690612752565b60405180910390a1600280546001600160a01b0319166001600160a01b038316179055600854610a9e576a295be96e6406697200000060085550565b600954620143700190565b60105460005b81811015610dbe576010805460009190600019810190811061142a57fe5b600091825260209091200154601080546001600160a01b039092169250908061144f57fe5b600082815260208120820160001990810180546001600160a01b03191690559091019091556040517f86d03f430c7616021073d7a71766f632f1ce19f289aa989534d9f4732253eb59916114a591849190612737565b60405180910390a15060010161140c565b600083836040516020016114cb9291906125a6565b60408051808303601f190181529181528151602092830120600081815260139093529120805491925090600160c01b90046001600160401b03166115b25760148054600180820183556000929092527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec01839055810180546001600160a01b0319166001600160a01b038716179055611565846040612095565b805161157b916002840191602090910190612359565b5060145460018201805467ffffffffffffffff60a01b1916600160a01b6000199093016001600160401b0316929092029190911790555b8054436001600160c01b038181166001600160401b03600160c01b80860482166001019091160291909316176001600160c01b0319169190911782556040517f7a459ed083a9b267865360013a5ad6dbc07e5befe6e4f71671c940fdd4206bee9161162391889190889088906125eb565b60405180910390a1600b80546001600160c01b0319811660016001600160c01b0392831681018316919091178084559301549216600160a01b9092046001600160401b0316600160c01b0291909117905550505050565b600060035443141561168e575060006104cd565b43600355600d544790811115611a645760006116b7600e54600d5461203290919063ffffffff16565b90508082141561182c57600e546005546116d19082612032565b6005556040517fa42d823c276ad1990284418c303209194a75fa95a901f19752a9f65a407ffa8c906117049083906127a1565b60405180910390a1600260009054906101000a90046001600160a01b03166001600160a01b031663c611c2c5826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561175c57600080fd5b505af19350505050801561176e575060015b6117dd5761177a6127b0565b806117855750611797565b611791308260006114b6565b506117d8565b6117d8306040518060400160405280601d81526020017f756e6b6e6f776e206572726f722e20726563656976654d696e74696e6700000081525060006114b6565b611826565b6006546117ea9082612032565b6006556040517f12773bf711e11ec0b058c3856d441d726d2dc89113706c4f4175571f1e830c5a9061181d9083906127a1565b60405180910390a15b50611a62565b8082101561188e57600061184b600d548461214990919063ffffffff16565b60075490915061185b9082612032565b6007556040517f3fe36bcb00188390b2b40f1ab66c58f660aea67fe98b9f80667f692e1a9ab3689061181d9083906127a1565b600e5460055461189d91612032565b600555600e54600d546000916118be916118b8908690612149565b90612149565b6007549091506118ce9082612032565b600755600e546040517fa42d823c276ad1990284418c303209194a75fa95a901f19752a9f65a407ffa8c91611902916127a1565b60405180910390a17f3fe36bcb00188390b2b40f1ab66c58f660aea67fe98b9f80667f692e1a9ab3688160405161193991906127a1565b60405180910390a1600260009054906101000a90046001600160a01b03166001600160a01b031663c611c2c5600e546040518263ffffffff1660e01b81526004016000604051808303818588803b15801561199357600080fd5b505af1935050505080156119a5575060015b611a14576119b16127b0565b806119bc57506119ce565b6119c8308260006114b6565b50611a0f565b611a0f306040518060400160405280601d81526020017f756e6b6e6f776e206572726f722e20726563656976654d696e74696e6700000081525060006114b6565b611a60565b600e54600654611a2391612032565b600655600e546040517f12773bf711e11ec0b058c3856d441d726d2dc89113706c4f4175571f1e830c5a91611a57916127a1565b60405180910390a15b505b505b60105460005b81811015611e8357600060108281548110611a8157fe5b60009182526020808320909101546001600160a01b031680835260129091526040909120549091508015611b0d576001600160a01b0382166000908152601260205260409081902060001983019055517f9895eddb1e8569b1dae526135aa5cab97f982fdc3b0ff7e17920c95e3b9bda6290611b0090849084906125d2565b60405180910390a1611e79565b6001600160a01b038216600090815260116020526040812054905a90506204a768811015611b77577f9b5c4be38598cb8d8b6e07727d2303d1d9fc2dfc31ad323170f5ea4dcc1f914a858703604051611b6691906127a1565b60405180910390a150505050611e83565b620493df1981018215801590611b8c57508083105b15611b945750815b846001600160a01b0316636d0e8c34826040518263ffffffff1660e01b8152600401602060405180830381600088803b158015611bd057600080fd5b5087f193505050508015611c01575060408051601f3d908101601f19168201909252611bfe9181019061247c565b60015b611e3857611c0d6127b0565b80611c185750611c9f565b611c2586825a86036114b6565b856001600160a01b031663e22fdece6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611c6057600080fd5b505af1158015611c74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c98919061247c565b5050611e33565b60005a9050600084118015611cbd575083611cba8483612149565b10155b15611d9057611cf1866040518060400160405280600a8152602001696f7574206f662067617360b01b8152508386036114b6565b6000866001600160a01b031663e22fdece6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611d2e57600080fd5b505af1158015611d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d66919061247c565b905080611d8a57600c546001600160a01b0388166000908152601260205260409020555b50611e31565b611dbc86604051806040016040528060078152602001663ab735b737bbb760c91b8152508386036114b6565b856001600160a01b031663e22fdece6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611df757600080fd5b505af1158015611e0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2f919061247c565b505b505b611e75565b507fe7aa66356adbd5e839ef210626f6d8f6f72109c17fadf4c4f9ca82b315ae79b4855a8403604051611e6c9291906125d2565b60405180910390a15b5050505b5050600101611a6a565b50611e8c6121a6565b92508215611ed657600e8390556040517f34f843cef0df42035141347873da1758a6643358831b5ba5b1580be947644f9290611ec99085906127a1565b60405180910390a1611edc565b6000600e555b505047600d5590565b60006104ca600754611f0460065460055461214990919063ffffffff16565b90612032565b6000808211611f53576040805162461bcd60e51b815260206004820152601060248201526f4469766973696f6e206279207a65726f60801b604482015290519081900360640190fd5b83611f605750600061200b565b83830283858281611f6d57fe5b041415611f8657828181611f7d57fe5b0491505061200b565b6000838681611f9157fe5b0490506000848781611f9f57fe5b0690506000858781611fad57fe5b0490506000868881611fbb57fe5b069050612003611fd588611fcf86856121bf565b90612218565b611f04611fe286866121bf565b611f04611fef89876121bf565b611f048d611ffd8c8b6121bf565b906121bf565b955050505050505b9392505050565b600073fffec6c83c8bf5c3f4ae0ccf8c45ce20e4560bd76104ca8161227f565b60008282018381101561208c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b60606000839050828151116120ad578391505061208f565b6000836001600160401b03811180156120c557600080fd5b506040519080825280601f01601f1916602001820160405280156120f0576020820181803683370190505b50905060005b848110156121405782818151811061210a57fe5b602001015160f81c60f81b82828151811061212157fe5b60200101906001600160f81b031916908160001a9053506001016120f6565b50949350505050565b6000828211156121a0576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60006104ca60055460045461214990919063ffffffff16565b6000826121ce5750600061208f565b828202828482816121db57fe5b041461208c5760405162461bcd60e51b815260040180806020018281038252602181526020018061286a6021913960400191505060405180910390fd5b600080821161226e576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161227757fe5b049392505050565b600154600160a01b900460ff16156122d5576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b179055600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261238f57600085556123d5565b82601f106123a857805160ff19168380011785556123d5565b828001600101855582156123d5579182015b828111156123d55782518255916020019190600101906123ba565b506108e79291505b808211156108e757600081556001016123dd565b600060208284031215612402578081fd5b813561208c81612854565b6000806020838503121561241f578081fd5b82356001600160401b0380821115612435578283fd5b818501915085601f830112612448578283fd5b813581811115612456578384fd5b86602060408302850101111561246a578384fd5b60209290920196919550909350505050565b60006020828403121561248d578081fd5b8151801515811461208c578182fd5b6000602082840312156124ad578081fd5b5035919050565b600080604083850312156124c6578182fd5b50508035926020909101359150565b6000815180845260208085019450808401835b8381101561250d5781516001600160a01b0316875295820195908201906001016124e8565b509495945050505050565b6000815180845260208085019450808401835b8381101561250d5781518752958201959082019060010161252b565b60008151808452815b8181101561256c57602081850181015186830182015201612550565b8181111561257d5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03831681526040602082018190526000906125ca90830184612547565b949350505050565b6001600160a01b03929092168252602082015260400190565b600060018060a01b0386168252846020830152608060408301526126126080830185612547565b905082606083015295945050505050565b606080825284519082018190526000906020906080840190828801845b828110156126655781516001600160a01b031684529284019290840190600101612640565b505050838103828501526126798187612518565b915050828103604084015261268e8185612518565b9695505050505050565b600060a082526126ab60a0830188612518565b6020838203818501526126be8289612518565b848103604086015287518082529092508183019082810284018301838a01865b8381101561270c57601f198784030185526126fa838351612547565b948601949250908501906001016126de565b50508681036060880152612720818a6124d5565b955050505050508260808301529695505050505050565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b0392831681529116602082015260400190565b60006020825261200b6020830184612547565b6001600160c01b039290921682526001600160401b0316602082015260400190565b90815260200190565b60e01c90565b600060443d10156127c0576104cd565b600481823e6308c379a06127d482516127aa565b146127de576104cd565b6040513d600319016004823e80513d6001600160401b03816024840111818411171561280d57505050506104cd565b8284019250825191508082111561282757505050506104cd565b503d8301602082840101111561283f575050506104cd565b601f01601f1916810160200160405291505090565b6001600160a01b0381168114610a9e57600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212204565821f65608e6e4fdb7076f78e5f829e603a82de85005cd73fca61d73e634f64736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c80638be2fb8611610104578063d38bfff4116100a2578063e9de7d6011610071578063e9de7d6014610322578063ecdda0dd14610335578063ed21b6e414610348578063ee323c921461035f576101cf565b8063d38bfff4146102e9578063d48a38df146102fc578063dded1b4714610304578063e371aef01461030c576101cf565b8063a6817ace116100de578063a6817ace146102be578063be0522e0146102c6578063c373a08e146102ce578063c9f960eb146102e1576101cf565b80638be2fb861461029b5780638ccf77a0146102a35780639d6a890f146102ab576101cf565b806362da19a511610171578063689c49991161014b578063689c49991461026557806372993615146102785780637fec8d3814610280578063870196b814610288576101cf565b806362da19a51461023c578063639031431461024457806363d4a53a1461024c576101cf565b80635042916c116101ad5780635042916c146102025780635aa6e675146102175780635d36b1901461022c57806360f7ac9714610234576101cf565b806310663750146101d45780631d76dea1146101f25780634f6a77b5146101fa575b600080fd5b6101dc610372565b6040516101e991906127a1565b60405180910390f35b6101dc610378565b6101dc61037e565b61021561021036600461249c565b610384565b005b61021f6103da565b6040516101e99190612592565b6102156103e9565b61021f6104ab565b6101dc6104ba565b6101dc6104c0565b6102546104d0565b6040516101e9959493929190612698565b61021561027336600461240d565b61050b565b6101dc61083a565b6101dc610840565b61021561029636600461249c565b6108eb565b6101dc610a3b565b610215610a41565b6102156102b93660046123f1565b610a9c565b6101dc610aa1565b61021f610aa7565b6102156102dc3660046123f1565b610ab6565b61021f610b5b565b6102156102f73660046123f1565b610b9a565b6101dc610c5c565b6101dc610c62565b610314610c68565b6040516101e992919061277f565b61021561033036600461249c565b610c89565b6102546103433660046124b4565b610dc2565b61035061111f565b6040516101e993929190612623565b61021561036d3660046123f1565b6112e4565b60055481565b60095481565b60085481565b6000546001600160a01b031633146103d5576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b600c55565b6000546001600160a01b031681565b6001546001600160a01b03163314610438576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd0818db185a5b585a5b9d609a1b604482015290519081900360640190fd5b600054600154604080516001600160a01b03938416815292909116602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6001546001600160a01b031681565b60045481565b60006104ca6113fb565b90505b90565b600b546060908190819081906000906104fa90600160c01b90046001600160401b03166001610dc2565b945094509450945094509091929394565b6000546001600160a01b0316331461055c576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b604080518082019091526008815267746f6f206d616e7960c01b60208201528190600a8211156105a85760405162461bcd60e51b815260040161059f919061276c565b60405180910390fd5b506105b1611406565b60005b818110156108345760008484838181106105ca57fe5b6105e092602060409092020190810191506123f1565b6001600160a01b031614156040518060400160405280600c81526020016b61646472657373207a65726f60a01b8152509061062e5760405162461bcd60e51b815260040161059f919061276c565b5060105460005b818110156106d7576010818154811061064a57fe5b6000918252602090912001546001600160a01b031686868581811061066b57fe5b61068192602060409092020190810191506123f1565b6001600160a01b031614156040518060400160405280600b81526020016a647570206164647265737360a81b815250906106ce5760405162461bcd60e51b815260040161059f919061276c565b50600101610635565b5060108585848181106106e657fe5b6106fc92602060409092020190810191506123f1565b81546001810183556000928352602090922090910180546001600160a01b0319166001600160a01b0390921691909117905584848381811061073a57fe5b905060400201602001356011600087878681811061075457fe5b61076a92602060409092020190810191506123f1565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000601260008787868181106107a057fe5b6107b692602060409092020190810191506123f1565b6001600160a01b031681526020810191909152604001600020557f86d03f430c7616021073d7a71766f632f1ce19f289aa989534d9f4732253eb598585848181106107fd57fe5b61081392602060409092020190810191506123f1565b6001604051610823929190612737565b60405180910390a1506001016105b4565b50505050565b60075481565b6002546000906001600160a01b031661088557610885306040518060400160405280600e81526020016d696e666c6174696f6e207a65726f60901b81525060006114b6565b60026001609c1b01331461089857600080fd5b6108a061167a565b905060006108ac611ee5565b90504781146108e7576108e7306040518060400160405280600e81526020016d6f7574206f662062616c616e636560901b81525060006114b6565b5090565b6000546001600160a01b0316331461093c576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b60085461094c90606e6064611f0a565b811115604051806040016040528060118152602001700dac2f040dad2dce840e8dede40d0d2ced607b1b815250906109975760405162461bcd60e51b815260040161059f919061276c565b5060408051808201909152601081526f6d6178206d696e74206973207a65726f60801b6020820152816109dd5760405162461bcd60e51b815260040161059f919061276c565b5062015180600a54014211604051806040016040528060128152602001711d1a5b594819d85c081d1bdbc81cda1bdc9d60721b81525090610a315760405162461bcd60e51b815260040161059f919061276c565b5060085542600a55565b60035481565b6000546001600160a01b03163314610a92576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b610a9a611406565b565bfe5b50565b600a5481565b6002546001600160a01b031681565b6000546001600160a01b03163314610b07576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f1f95fb40be3a947982072902a887b521248d1d8931a39eb38f84f4d6fd758b699181900360200190a150565b600f5460009060ff16610b8857600f805460ff191660011790556000610b7f612012565b91506104cd9050565b506000546001600160a01b03166104cd565b6000546001600160a01b03163314610beb576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b600c5481565b60065481565b600b546001600160c01b03811690600160c01b90046001600160401b031682565b60025460408051808201909152600d81526c3737ba1034b7333630ba34b7b760991b602082015233916001600160a01b03168214610cda5760405162461bcd60e51b815260040161059f919061276c565b5060085482111560405180604001604052806007815260200166746f6f2062696760c81b81525090610d1f5760405162461bcd60e51b815260040161059f919061276c565b5042610d296113fb565b10604051806040016040528060098152602001683a37b79037b33a32b760b91b81525090610d6a5760405162461bcd60e51b815260040161059f919061276c565b508115610dbe5742600955600454610d829083612032565b6004556040517f4c4f1efc376f31abeb51b72c5f9ed81cf4016591312bb02337e58149dcfaaab490610db59084906127a1565b60405180910390a15b5050565b606080606080600060148054905087106040518060400160405280601081526020016f0e6e8c2e4e840d2dcc8caf040d0d2ced60831b81525090610e195760405162461bcd60e51b815260040161059f919061276c565b506014546000908888011115610e3457601454889003610e36565b865b9050806001600160401b0381118015610e4e57600080fd5b50604051908082528060200260200182016040528015610e78578160200160208202803683370190505b509550806001600160401b0381118015610e9157600080fd5b50604051908082528060200260200182016040528015610ebb578160200160208202803683370190505b509450806001600160401b0381118015610ed457600080fd5b50604051908082528060200260200182016040528015610f0857816020015b6060815260200190600190039081610ef35790505b509350806001600160401b0381118015610f2157600080fd5b50604051908082528060200260200182016040528015610f4b578160200160208202803683370190505b50925060005b818110156111035760006014828b0181548110610f6a57fe5b6000918252602080832090910154808352601390915260409091205489519192506001600160c01b031690899084908110610fa157fe5b6020026020010181815250506013600082815260200190815260200160002060000160189054906101000a90046001600160401b03166001600160401b0316878381518110610fec57fe5b6020908102919091018101919091526000828152601382526040908190206002908101805483516001821615610100026000190190911692909204601f810185900485028301850190935282825290929091908301828280156110905780601f1061106557610100808354040283529160200191611090565b820191906000526020600020905b81548152906001019060200180831161107357829003601f168201915b50505050508683815181106110a157fe5b60200260200101819052506013600082815260200190815260200160002060010160009054906101000a90046001600160a01b03168583815181106110e257fe5b6001600160a01b039092166020928302919091019091015250600101610f51565b5050600b549497939650919450926001600160c01b0316919050565b60105460609081908190806001600160401b038111801561113f57600080fd5b50604051908082528060200260200182016040528015611169578160200160208202803683370190505b509350806001600160401b038111801561118257600080fd5b506040519080825280602002602001820160405280156111ac578160200160208202803683370190505b509250806001600160401b03811180156111c557600080fd5b506040519080825280602002602001820160405280156111ef578160200160208202803683370190505b50915060005b818110156112dd5760006010828154811061120c57fe5b9060005260206000200160009054906101000a90046001600160a01b031690508086838151811061123957fe5b60200260200101906001600160a01b031690816001600160a01b03168152505060116000826001600160a01b03166001600160a01b031681526020019081526020016000205485838151811061128b57fe5b60200260200101818152505060126000826001600160a01b03166001600160a01b03168152602001908152602001600020548483815181106112c957fe5b6020908102919091010152506001016111f5565b5050909192565b6000546001600160a01b03163314611335576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b60408051808201909152600e81526d696e666c6174696f6e207a65726f60901b60208201526001600160a01b0382166113815760405162461bcd60e51b815260040161059f919061276c565b506002546040517f4bdd1012a7d55ed9afad8675a125e1b68c7c15f712c0f3d5cddac69c3b979805916113bf9184916001600160a01b031690612752565b60405180910390a1600280546001600160a01b0319166001600160a01b038316179055600854610a9e576a295be96e6406697200000060085550565b600954620143700190565b60105460005b81811015610dbe576010805460009190600019810190811061142a57fe5b600091825260209091200154601080546001600160a01b039092169250908061144f57fe5b600082815260208120820160001990810180546001600160a01b03191690559091019091556040517f86d03f430c7616021073d7a71766f632f1ce19f289aa989534d9f4732253eb59916114a591849190612737565b60405180910390a15060010161140c565b600083836040516020016114cb9291906125a6565b60408051808303601f190181529181528151602092830120600081815260139093529120805491925090600160c01b90046001600160401b03166115b25760148054600180820183556000929092527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec01839055810180546001600160a01b0319166001600160a01b038716179055611565846040612095565b805161157b916002840191602090910190612359565b5060145460018201805467ffffffffffffffff60a01b1916600160a01b6000199093016001600160401b0316929092029190911790555b8054436001600160c01b038181166001600160401b03600160c01b80860482166001019091160291909316176001600160c01b0319169190911782556040517f7a459ed083a9b267865360013a5ad6dbc07e5befe6e4f71671c940fdd4206bee9161162391889190889088906125eb565b60405180910390a1600b80546001600160c01b0319811660016001600160c01b0392831681018316919091178084559301549216600160a01b9092046001600160401b0316600160c01b0291909117905550505050565b600060035443141561168e575060006104cd565b43600355600d544790811115611a645760006116b7600e54600d5461203290919063ffffffff16565b90508082141561182c57600e546005546116d19082612032565b6005556040517fa42d823c276ad1990284418c303209194a75fa95a901f19752a9f65a407ffa8c906117049083906127a1565b60405180910390a1600260009054906101000a90046001600160a01b03166001600160a01b031663c611c2c5826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561175c57600080fd5b505af19350505050801561176e575060015b6117dd5761177a6127b0565b806117855750611797565b611791308260006114b6565b506117d8565b6117d8306040518060400160405280601d81526020017f756e6b6e6f776e206572726f722e20726563656976654d696e74696e6700000081525060006114b6565b611826565b6006546117ea9082612032565b6006556040517f12773bf711e11ec0b058c3856d441d726d2dc89113706c4f4175571f1e830c5a9061181d9083906127a1565b60405180910390a15b50611a62565b8082101561188e57600061184b600d548461214990919063ffffffff16565b60075490915061185b9082612032565b6007556040517f3fe36bcb00188390b2b40f1ab66c58f660aea67fe98b9f80667f692e1a9ab3689061181d9083906127a1565b600e5460055461189d91612032565b600555600e54600d546000916118be916118b8908690612149565b90612149565b6007549091506118ce9082612032565b600755600e546040517fa42d823c276ad1990284418c303209194a75fa95a901f19752a9f65a407ffa8c91611902916127a1565b60405180910390a17f3fe36bcb00188390b2b40f1ab66c58f660aea67fe98b9f80667f692e1a9ab3688160405161193991906127a1565b60405180910390a1600260009054906101000a90046001600160a01b03166001600160a01b031663c611c2c5600e546040518263ffffffff1660e01b81526004016000604051808303818588803b15801561199357600080fd5b505af1935050505080156119a5575060015b611a14576119b16127b0565b806119bc57506119ce565b6119c8308260006114b6565b50611a0f565b611a0f306040518060400160405280601d81526020017f756e6b6e6f776e206572726f722e20726563656976654d696e74696e6700000081525060006114b6565b611a60565b600e54600654611a2391612032565b600655600e546040517f12773bf711e11ec0b058c3856d441d726d2dc89113706c4f4175571f1e830c5a91611a57916127a1565b60405180910390a15b505b505b60105460005b81811015611e8357600060108281548110611a8157fe5b60009182526020808320909101546001600160a01b031680835260129091526040909120549091508015611b0d576001600160a01b0382166000908152601260205260409081902060001983019055517f9895eddb1e8569b1dae526135aa5cab97f982fdc3b0ff7e17920c95e3b9bda6290611b0090849084906125d2565b60405180910390a1611e79565b6001600160a01b038216600090815260116020526040812054905a90506204a768811015611b77577f9b5c4be38598cb8d8b6e07727d2303d1d9fc2dfc31ad323170f5ea4dcc1f914a858703604051611b6691906127a1565b60405180910390a150505050611e83565b620493df1981018215801590611b8c57508083105b15611b945750815b846001600160a01b0316636d0e8c34826040518263ffffffff1660e01b8152600401602060405180830381600088803b158015611bd057600080fd5b5087f193505050508015611c01575060408051601f3d908101601f19168201909252611bfe9181019061247c565b60015b611e3857611c0d6127b0565b80611c185750611c9f565b611c2586825a86036114b6565b856001600160a01b031663e22fdece6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611c6057600080fd5b505af1158015611c74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c98919061247c565b5050611e33565b60005a9050600084118015611cbd575083611cba8483612149565b10155b15611d9057611cf1866040518060400160405280600a8152602001696f7574206f662067617360b01b8152508386036114b6565b6000866001600160a01b031663e22fdece6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611d2e57600080fd5b505af1158015611d42573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d66919061247c565b905080611d8a57600c546001600160a01b0388166000908152601260205260409020555b50611e31565b611dbc86604051806040016040528060078152602001663ab735b737bbb760c91b8152508386036114b6565b856001600160a01b031663e22fdece6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611df757600080fd5b505af1158015611e0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e2f919061247c565b505b505b611e75565b507fe7aa66356adbd5e839ef210626f6d8f6f72109c17fadf4c4f9ca82b315ae79b4855a8403604051611e6c9291906125d2565b60405180910390a15b5050505b5050600101611a6a565b50611e8c6121a6565b92508215611ed657600e8390556040517f34f843cef0df42035141347873da1758a6643358831b5ba5b1580be947644f9290611ec99085906127a1565b60405180910390a1611edc565b6000600e555b505047600d5590565b60006104ca600754611f0460065460055461214990919063ffffffff16565b90612032565b6000808211611f53576040805162461bcd60e51b815260206004820152601060248201526f4469766973696f6e206279207a65726f60801b604482015290519081900360640190fd5b83611f605750600061200b565b83830283858281611f6d57fe5b041415611f8657828181611f7d57fe5b0491505061200b565b6000838681611f9157fe5b0490506000848781611f9f57fe5b0690506000858781611fad57fe5b0490506000868881611fbb57fe5b069050612003611fd588611fcf86856121bf565b90612218565b611f04611fe286866121bf565b611f04611fef89876121bf565b611f048d611ffd8c8b6121bf565b906121bf565b955050505050505b9392505050565b600073fffec6c83c8bf5c3f4ae0ccf8c45ce20e4560bd76104ca8161227f565b60008282018381101561208c576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b90505b92915050565b60606000839050828151116120ad578391505061208f565b6000836001600160401b03811180156120c557600080fd5b506040519080825280601f01601f1916602001820160405280156120f0576020820181803683370190505b50905060005b848110156121405782818151811061210a57fe5b602001015160f81c60f81b82828151811061212157fe5b60200101906001600160f81b031916908160001a9053506001016120f6565b50949350505050565b6000828211156121a0576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60006104ca60055460045461214990919063ffffffff16565b6000826121ce5750600061208f565b828202828482816121db57fe5b041461208c5760405162461bcd60e51b815260040180806020018281038252602181526020018061286a6021913960400191505060405180910390fd5b600080821161226e576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b81838161227757fe5b049392505050565b600154600160a01b900460ff16156122d5576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b179055600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928261238f57600085556123d5565b82601f106123a857805160ff19168380011785556123d5565b828001600101855582156123d5579182015b828111156123d55782518255916020019190600101906123ba565b506108e79291505b808211156108e757600081556001016123dd565b600060208284031215612402578081fd5b813561208c81612854565b6000806020838503121561241f578081fd5b82356001600160401b0380821115612435578283fd5b818501915085601f830112612448578283fd5b813581811115612456578384fd5b86602060408302850101111561246a578384fd5b60209290920196919550909350505050565b60006020828403121561248d578081fd5b8151801515811461208c578182fd5b6000602082840312156124ad578081fd5b5035919050565b600080604083850312156124c6578182fd5b50508035926020909101359150565b6000815180845260208085019450808401835b8381101561250d5781516001600160a01b0316875295820195908201906001016124e8565b509495945050505050565b6000815180845260208085019450808401835b8381101561250d5781518752958201959082019060010161252b565b60008151808452815b8181101561256c57602081850181015186830182015201612550565b8181111561257d5782602083870101525b50601f01601f19169290920160200192915050565b6001600160a01b0391909116815260200190565b6001600160a01b03831681526040602082018190526000906125ca90830184612547565b949350505050565b6001600160a01b03929092168252602082015260400190565b600060018060a01b0386168252846020830152608060408301526126126080830185612547565b905082606083015295945050505050565b606080825284519082018190526000906020906080840190828801845b828110156126655781516001600160a01b031684529284019290840190600101612640565b505050838103828501526126798187612518565b915050828103604084015261268e8185612518565b9695505050505050565b600060a082526126ab60a0830188612518565b6020838203818501526126be8289612518565b848103604086015287518082529092508183019082810284018301838a01865b8381101561270c57601f198784030185526126fa838351612547565b948601949250908501906001016126de565b50508681036060880152612720818a6124d5565b955050505050508260808301529695505050505050565b6001600160a01b039290921682521515602082015260400190565b6001600160a01b0392831681529116602082015260400190565b60006020825261200b6020830184612547565b6001600160c01b039290921682526001600160401b0316602082015260400190565b90815260200190565b60e01c90565b600060443d10156127c0576104cd565b600481823e6308c379a06127d482516127aa565b146127de576104cd565b6040513d600319016004823e80513d6001600160401b03816024840111818411171561280d57505050506104cd565b8284019250825191508082111561282757505050506104cd565b503d8301602082840101111561283f575050506104cd565b601f01601f1916810160200160405291505090565b6001600160a01b0381168114610a9e57600080fdfe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212204565821f65608e6e4fdb7076f78e5f829e603a82de85005cd73fca61d73e634f64736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
