{
  "_format": "hh-sol-artifact-1",
  "contractName": "Distribution",
  "sourceName": "contracts/tokenPools/implementation/Distribution.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "theAccount",
          "type": "address"
        }
      ],
      "name": "AccountClaimed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "theAccount",
          "type": "address"
        }
      ],
      "name": "AccountOptOut",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address[]",
          "name": "accountsArray",
          "type": "address[]"
        }
      ],
      "name": "AccountsAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "EntitlementStarted",
      "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": [],
      "name": "OptOutWeiWithdrawn",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "airdropAccounts",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "entitlementBalanceWei",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalClaimedWei",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "optOutBalanceWei",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "airdroppedAtGenesisWei",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claim",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_amountWei",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "claimGovernance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "entitlementStartTs",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getClaimableAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_amountWei",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "getClaimableAmountOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_amountWei",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "governance",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_governance",
          "type": "address"
        }
      ],
      "name": "initialise",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "optOutOfAirdrop",
      "outputs": [],
      "stateMutability": "nonpayable",
      "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": [],
      "name": "secondsTillNextClaim",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "timeTill",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "toAddress",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "balance",
          "type": "uint256[]"
        }
      ],
      "name": "setClaimBalance",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_entitlementStartTs",
          "type": "uint256"
        }
      ],
      "name": "setEntitlementStart",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalClaimedWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalEntitlementWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalOptOutWei",
      "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": [
        {
          "internalType": "address",
          "name": "_targetAddress",
          "type": "address"
        }
      ],
      "name": "withdrawOptOutWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "_amountWei",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "withdrawnOptOutWei",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506040516200214838038062002148833981810160405260208110156200003757600080fd5b505180806001600160a01b0381161562000056576200005681620000ae565b506001600160a01b038116620000a6576040805162461bcd60e51b815260206004820152601060248201526f5f676f7665726e616e6365207a65726f60801b604482015290519081900360640190fd5b505062000192565b600154600160a01b900460ff16156200010e576040805162461bcd60e51b815260206004820152601460248201527f696e697469616c6973656420213d2066616c7365000000000000000000000000604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b179055600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b611fa680620001a26000396000f3fe608060405234801561001057600080fd5b506004361061012b5760003560e01c80639d6a890f116100ad578063d38bfff411610071578063d38bfff41461034e578063e28ef1f714610374578063e60eb6ff14610391578063f2325e3814610399578063f2a1f767146103a15761012b565b80639d6a890f146102cc5780639f71043e146102f2578063b5551ab7146102fa578063c354bd6e14610320578063c373a08e146103285761012b565b80634e71d92d116100f45780634e71d92d1461026a5780635aa6e675146102725780635d36b1901461029657806360f7ac971461029e5780637fd45d2b146102a65761012b565b80626a1d5114610130578063266312011461014a57806344a8ace21461020e57806344d94b4b1461025a5780634bb5696a14610262575b600080fd5b6101386103a9565b60408051918252519081900360200190f35b61020c6004803603604081101561016057600080fd5b81019060208101813564010000000081111561017b57600080fd5b82018360208201111561018d57600080fd5b803590602001918460208302840111640100000000831117156101af57600080fd5b9193909290916020810190356401000000008111156101cd57600080fd5b8201836020820111156101df57600080fd5b8035906020019184602083028401116401000000008311171561020157600080fd5b5090925090506103af565b005b6102346004803603602081101561022457600080fd5b50356001600160a01b031661069f565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6101386106c8565b6101386106ce565b610138610763565b61027a610aaf565b604080516001600160a01b039092168252519081900360200190f35b61020c610abe565b61027a610b80565b610138600480360360208110156102bc57600080fd5b50356001600160a01b0316610b8f565b61020c600480360360208110156102e257600080fd5b50356001600160a01b0316610c25565b610138610cff565b6101386004803603602081101561031057600080fd5b50356001600160a01b0316610d05565b610138610feb565b61020c6004803603602081101561033e57600080fd5b50356001600160a01b031661107b565b61020c6004803603602081101561036457600080fd5b50356001600160a01b0316611120565b61020c6004803603602081101561038a57600080fd5b50356111e2565b610138611354565b61013861135a565b61020c611360565b60065481565b6000546001600160a01b03163314610400576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b604080518082019091526008815267746f6f206d616e7960c01b60208201526103e88411156104ad5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561047257818101518382015260200161045a565b50505050905090810190601f16801561049f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060408051808201909152601781527f617272617973206c656e67746873206d69736d6174636800000000000000000060208201528382146105305760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5060005b61ffff81168411156106355760006105716105dc61271086868661ffff1681811061055b57fe5b905060200201356115f19092919063ffffffff16565b9050600061059e8286868661ffff1681811061058957fe5b905060200201356116ff90919063ffffffff16565b905060405180608001604052808281526020016000815260200160008152602001838152506002600089898761ffff168181106105d757fe5b602090810292909201356001600160a01b031683525081810192909252604090810160002083518155918301516001830155820151600282015560609091015160039182015554610628908261175c565b6003555050600101610534565b507fc21490756c6f0185a8ad2363084fd0a45b06707979f77786b5e681bddc1d2fa1848460405180806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f19169092018290039550909350505050a150505050565b600260208190526000918252604090912080546001820154928201546003909201549092919084565b60055481565b60006007546000141580156106e4575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b815250906107545760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5061075e336117b6565b905090565b6000600754600014158015610779575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b815250906107e95760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5033600081815260026020908152604091829020600301548251808401909352600e83526d1b9bdd081c9959da5cdd195c995960921b918301919091526108715760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5060026000826001600160a01b03166001600160a01b031681526020019081526020016000206002015460001460405180604001604052806011815260200170185b1c9958591e481bdc1d1959081bdd5d607a1b815250906109145760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b503360008181526002602052604090209061092e90611a4b565b9250600083116040518060400160405280601e81526020017f6e6f2062616c616e63652063757272656e746c7920617661696c61626c650000815250906109b65760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b50600181018054840190556004546109ce908461175c565b60045560405133907f98220ba7e456cda59b84320240d405cb87d7d871ba13f798d6362297818d29fc90600090a2604051339084156108fc029085906000818181858888f19350505050158015610a29573d6000803e3d6000fd5b50505047610a35611cb9565b11156040518060400160405280600f81526020016e62616c616e636520746f6f206c6f7760881b81525090610aab5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5090565b6000546001600160a01b031681565b6001546001600160a01b03163314610b0d576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd0818db185a5b585a5b9d609a1b604482015290519081900360640190fd5b600054600154604080516001600160a01b03938416815292909116602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6001546001600160a01b031681565b6000600754600014158015610ba5575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b81525090610c155760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b50610c1f82611a4b565b92915050565b600154600160a01b900460ff1615610c7b576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b179055600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b60045481565b600080546001600160a01b03163314610d57576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b60075415801590610d69575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b81525090610dd95760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b506000600554116040518060400160405280601e81526020017f6e6f2062616c616e63652063757272656e746c7920617661696c61626c65000081525090610e625760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5060065460055414156040518060400160405280601e81526020017f6e6f2062616c616e63652063757272656e746c7920617661696c61626c65000081525090610eed5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b50600654600554610efd916116ff565b6005546006556040519091507f79d406fa3c1c020905a48c371f891e33f8210c0e4ab4d5221dc01f531f7342db90600090a16040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610f65573d6000803e3d6000fd5b5047610f6f611cb9565b11156040518060400160405280600f81526020016e62616c616e636520746f6f206c6f7760881b81525090610fe55760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b50919050565b6000600754600014158015611001575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b815250906110715760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5061075e33611a4b565b6000546001600160a01b031633146110cc576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f1f95fb40be3a947982072902a887b521248d1d8931a39eb38f84f4d6fd758b699181900360200190a150565b6000546001600160a01b03163314611171576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6000546001600160a01b03163314611233576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b6007546040805180820190915260088152676e6f74207a65726f60c01b602082015290156112a25760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5060078190556040517f11b09d9dabfa7c2fc728e40a9c71bbb893c699e75d271e7ca02ef02bead3e44390600090a1476112da611cb9565b11156040518060400160405280600f81526020016e62616c616e636520746f6f206c6f7760881b815250906113505760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5050565b60075481565b60035481565b33600081815260026020908152604091829020600301548251808401909352600e83526d1b9bdd081c9959da5cdd195c995960921b918301919091526113e75760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5060026000826001600160a01b03166001600160a01b031681526020019081526020016000206002015460001460405180604001604052806011815260200170185b1c9958591e481bdc1d1959081bdd5d607a1b8152509061148a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b506007541580159061149d575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b8152509061150d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b50336000908152600260209081526040918290206001810154815484518086019095526015855274185b1c9958591e48199d5b1b1e4818db185a5b5959605a1b93850193909352909291116115a35760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5060405133907fdaa99ea0f252dcde78c690a59f1d9953dcca69dc3127eff6f919fc8b16ed873090600090a26001810154815403600282018190556005546115ea9161175c565b6005555050565b600080821161163a576040805162461bcd60e51b815260206004820152601060248201526f4469766973696f6e206279207a65726f60801b604482015290519081900360640190fd5b83611647575060006116f8565b8383028385828161165457fe5b04141561166d5782818161166457fe5b049150506116f8565b600083868161167857fe5b049050600084878161168657fe5b069050600085878161169457fe5b04905060008688816116a257fe5b0690506116f06116bc886116b68685611cde565b90611d37565b6116ea6116c98686611cde565b6116ea6116d68987611cde565b6116ea8d6116e48c8b611cde565b90611cde565b9061175c565b955050505050505b9392505050565b600082821115611756576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156116f8576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006007546000141580156117cc575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b8152509061183c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b508160026000826001600160a01b03166001600160a01b0316815260200190815260200160002060030154600014156040518060400160405280600e81526020016d1b9bdd081c9959da5cdd195c995960921b815250906118de5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5060026000826001600160a01b03166001600160a01b031681526020019081526020016000206002015460001460405180604001604052806011815260200170185b1c9958591e481bdc1d1959081bdd5d607a1b815250906119815760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b50601d6119a062278d006116b6600754426116ff90919063ffffffff16565b1060405180604001604052806015815260200174185b1c9958591e48199d5b1b1e4818db185a5b5959605a1b81525090611a1b5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b506116f8611a4162278d00611a3b600754426116ff90919063ffffffff16565b90611d9e565b62278d00906116ff565b6000600754600014158015611a61575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b81525090611ad15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b508160026000826001600160a01b03166001600160a01b0316815260200190815260200160002060030154600014156040518060400160405280600e81526020016d1b9bdd081c9959da5cdd195c995960921b81525090611b735760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5060026000826001600160a01b03166001600160a01b031681526020019081526020016000206002015460001460405180604001604052806011815260200170185b1c9958591e481bdc1d1959081bdd5d607a1b81525090611c165760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b506001600160a01b03831660009081526002602081815260408084208151608081018352815481526001820154938101939093529283015490820152600390910154606082015290611c66611e05565b8251909150600090611c7b90836121346115f1565b9050611c93611c8e828560000151611ece565b611ee4565b6fffffffffffffffffffffffffffffffff16905082602001518103945050505050919050565b600061075e600654611cd86004546003546116ff90919063ffffffff16565b906116ff565b600082611ced57506000610c1f565b82820282848281611cfa57fe5b04146116f85760405162461bcd60e51b8152600401808060200182810382526021815260200180611f506021913960400191505060405180910390fd5b6000808211611d8d576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611d9657fe5b049392505050565b6000808211611df4576040805162461bcd60e51b815260206004820152601860248201527f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000604482015290519081900360640190fd5b818381611dfd57fe5b069392505050565b6000600754600014158015611e1b575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b81525090611e8b5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b506000611eaa620151806116b6600754426116ff90919063ffffffff16565b9050611ec8611ec061012c6116e484601e611d37565b612134611ece565b91505090565b6000818310611edd57816116f8565b5090919050565b6000600160801b8210610aab5760405162461bcd60e51b8152600401808060200182810382526027815260200180611f296027913960400191505060405180910390fdfe53616665436173743a2076616c756520646f65736e27742066697420696e203132382062697473536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122087e97427d656757580af58c3578bc7d40227b07464c6578cbcf20838cabbcbfe64736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061012b5760003560e01c80639d6a890f116100ad578063d38bfff411610071578063d38bfff41461034e578063e28ef1f714610374578063e60eb6ff14610391578063f2325e3814610399578063f2a1f767146103a15761012b565b80639d6a890f146102cc5780639f71043e146102f2578063b5551ab7146102fa578063c354bd6e14610320578063c373a08e146103285761012b565b80634e71d92d116100f45780634e71d92d1461026a5780635aa6e675146102725780635d36b1901461029657806360f7ac971461029e5780637fd45d2b146102a65761012b565b80626a1d5114610130578063266312011461014a57806344a8ace21461020e57806344d94b4b1461025a5780634bb5696a14610262575b600080fd5b6101386103a9565b60408051918252519081900360200190f35b61020c6004803603604081101561016057600080fd5b81019060208101813564010000000081111561017b57600080fd5b82018360208201111561018d57600080fd5b803590602001918460208302840111640100000000831117156101af57600080fd5b9193909290916020810190356401000000008111156101cd57600080fd5b8201836020820111156101df57600080fd5b8035906020019184602083028401116401000000008311171561020157600080fd5b5090925090506103af565b005b6102346004803603602081101561022457600080fd5b50356001600160a01b031661069f565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6101386106c8565b6101386106ce565b610138610763565b61027a610aaf565b604080516001600160a01b039092168252519081900360200190f35b61020c610abe565b61027a610b80565b610138600480360360208110156102bc57600080fd5b50356001600160a01b0316610b8f565b61020c600480360360208110156102e257600080fd5b50356001600160a01b0316610c25565b610138610cff565b6101386004803603602081101561031057600080fd5b50356001600160a01b0316610d05565b610138610feb565b61020c6004803603602081101561033e57600080fd5b50356001600160a01b031661107b565b61020c6004803603602081101561036457600080fd5b50356001600160a01b0316611120565b61020c6004803603602081101561038a57600080fd5b50356111e2565b610138611354565b61013861135a565b61020c611360565b60065481565b6000546001600160a01b03163314610400576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b604080518082019091526008815267746f6f206d616e7960c01b60208201526103e88411156104ad5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561047257818101518382015260200161045a565b50505050905090810190601f16801561049f5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060408051808201909152601781527f617272617973206c656e67746873206d69736d6174636800000000000000000060208201528382146105305760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5060005b61ffff81168411156106355760006105716105dc61271086868661ffff1681811061055b57fe5b905060200201356115f19092919063ffffffff16565b9050600061059e8286868661ffff1681811061058957fe5b905060200201356116ff90919063ffffffff16565b905060405180608001604052808281526020016000815260200160008152602001838152506002600089898761ffff168181106105d757fe5b602090810292909201356001600160a01b031683525081810192909252604090810160002083518155918301516001830155820151600282015560609091015160039182015554610628908261175c565b6003555050600101610534565b507fc21490756c6f0185a8ad2363084fd0a45b06707979f77786b5e681bddc1d2fa1848460405180806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f19169092018290039550909350505050a150505050565b600260208190526000918252604090912080546001820154928201546003909201549092919084565b60055481565b60006007546000141580156106e4575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b815250906107545760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5061075e336117b6565b905090565b6000600754600014158015610779575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b815250906107e95760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5033600081815260026020908152604091829020600301548251808401909352600e83526d1b9bdd081c9959da5cdd195c995960921b918301919091526108715760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5060026000826001600160a01b03166001600160a01b031681526020019081526020016000206002015460001460405180604001604052806011815260200170185b1c9958591e481bdc1d1959081bdd5d607a1b815250906109145760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b503360008181526002602052604090209061092e90611a4b565b9250600083116040518060400160405280601e81526020017f6e6f2062616c616e63652063757272656e746c7920617661696c61626c650000815250906109b65760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b50600181018054840190556004546109ce908461175c565b60045560405133907f98220ba7e456cda59b84320240d405cb87d7d871ba13f798d6362297818d29fc90600090a2604051339084156108fc029085906000818181858888f19350505050158015610a29573d6000803e3d6000fd5b50505047610a35611cb9565b11156040518060400160405280600f81526020016e62616c616e636520746f6f206c6f7760881b81525090610aab5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5090565b6000546001600160a01b031681565b6001546001600160a01b03163314610b0d576040805162461bcd60e51b815260206004820152600d60248201526c1b9bdd0818db185a5b585a5b9d609a1b604482015290519081900360640190fd5b600054600154604080516001600160a01b03938416815292909116602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a160018054600080546001600160a01b03199081166001600160a01b03841617909155169055565b6001546001600160a01b031681565b6000600754600014158015610ba5575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b81525090610c155760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b50610c1f82611a4b565b92915050565b600154600160a01b900460ff1615610c7b576040805162461bcd60e51b8152602060048201526014602482015273696e697469616c6973656420213d2066616c736560601b604482015290519081900360640190fd5b6001805460ff60a01b1916600160a01b179055600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b60045481565b600080546001600160a01b03163314610d57576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b60075415801590610d69575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b81525090610dd95760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b506000600554116040518060400160405280601e81526020017f6e6f2062616c616e63652063757272656e746c7920617661696c61626c65000081525090610e625760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5060065460055414156040518060400160405280601e81526020017f6e6f2062616c616e63652063757272656e746c7920617661696c61626c65000081525090610eed5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b50600654600554610efd916116ff565b6005546006556040519091507f79d406fa3c1c020905a48c371f891e33f8210c0e4ab4d5221dc01f531f7342db90600090a16040516001600160a01b0383169082156108fc029083906000818181858888f19350505050158015610f65573d6000803e3d6000fd5b5047610f6f611cb9565b11156040518060400160405280600f81526020016e62616c616e636520746f6f206c6f7760881b81525090610fe55760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b50919050565b6000600754600014158015611001575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b815250906110715760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5061075e33611a4b565b6000546001600160a01b031633146110cc576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b600180546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f1f95fb40be3a947982072902a887b521248d1d8931a39eb38f84f4d6fd758b699181900360200190a150565b6000546001600160a01b03163314611171576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b600054604080516001600160a01b039283168152918316602083015280517f434a2db650703b36c824e745330d6397cdaa9ee2cc891a4938ae853e1c50b68d9281900390910190a1600080546001600160a01b039092166001600160a01b0319928316179055600180549091169055565b6000546001600160a01b03163314611233576040805162461bcd60e51b815260206004820152600f60248201526e6f6e6c7920676f7665726e616e636560881b604482015290519081900360640190fd5b6007546040805180820190915260088152676e6f74207a65726f60c01b602082015290156112a25760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5060078190556040517f11b09d9dabfa7c2fc728e40a9c71bbb893c699e75d271e7ca02ef02bead3e44390600090a1476112da611cb9565b11156040518060400160405280600f81526020016e62616c616e636520746f6f206c6f7760881b815250906113505760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5050565b60075481565b60035481565b33600081815260026020908152604091829020600301548251808401909352600e83526d1b9bdd081c9959da5cdd195c995960921b918301919091526113e75760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5060026000826001600160a01b03166001600160a01b031681526020019081526020016000206002015460001460405180604001604052806011815260200170185b1c9958591e481bdc1d1959081bdd5d607a1b8152509061148a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b506007541580159061149d575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b8152509061150d5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b50336000908152600260209081526040918290206001810154815484518086019095526015855274185b1c9958591e48199d5b1b1e4818db185a5b5959605a1b93850193909352909291116115a35760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5060405133907fdaa99ea0f252dcde78c690a59f1d9953dcca69dc3127eff6f919fc8b16ed873090600090a26001810154815403600282018190556005546115ea9161175c565b6005555050565b600080821161163a576040805162461bcd60e51b815260206004820152601060248201526f4469766973696f6e206279207a65726f60801b604482015290519081900360640190fd5b83611647575060006116f8565b8383028385828161165457fe5b04141561166d5782818161166457fe5b049150506116f8565b600083868161167857fe5b049050600084878161168657fe5b069050600085878161169457fe5b04905060008688816116a257fe5b0690506116f06116bc886116b68685611cde565b90611d37565b6116ea6116c98686611cde565b6116ea6116d68987611cde565b6116ea8d6116e48c8b611cde565b90611cde565b9061175c565b955050505050505b9392505050565b600082821115611756576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000828201838110156116f8576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006007546000141580156117cc575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b8152509061183c5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b508160026000826001600160a01b03166001600160a01b0316815260200190815260200160002060030154600014156040518060400160405280600e81526020016d1b9bdd081c9959da5cdd195c995960921b815250906118de5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5060026000826001600160a01b03166001600160a01b031681526020019081526020016000206002015460001460405180604001604052806011815260200170185b1c9958591e481bdc1d1959081bdd5d607a1b815250906119815760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b50601d6119a062278d006116b6600754426116ff90919063ffffffff16565b1060405180604001604052806015815260200174185b1c9958591e48199d5b1b1e4818db185a5b5959605a1b81525090611a1b5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b506116f8611a4162278d00611a3b600754426116ff90919063ffffffff16565b90611d9e565b62278d00906116ff565b6000600754600014158015611a61575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b81525090611ad15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b508160026000826001600160a01b03166001600160a01b0316815260200190815260200160002060030154600014156040518060400160405280600e81526020016d1b9bdd081c9959da5cdd195c995960921b81525090611b735760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b5060026000826001600160a01b03166001600160a01b031681526020019081526020016000206002015460001460405180604001604052806011815260200170185b1c9958591e481bdc1d1959081bdd5d607a1b81525090611c165760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b506001600160a01b03831660009081526002602081815260408084208151608081018352815481526001820154938101939093529283015490820152600390910154606082015290611c66611e05565b8251909150600090611c7b90836121346115f1565b9050611c93611c8e828560000151611ece565b611ee4565b6fffffffffffffffffffffffffffffffff16905082602001518103945050505050919050565b600061075e600654611cd86004546003546116ff90919063ffffffff16565b906116ff565b600082611ced57506000610c1f565b82820282848281611cfa57fe5b04146116f85760405162461bcd60e51b8152600401808060200182810382526021815260200180611f506021913960400191505060405180910390fd5b6000808211611d8d576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b818381611d9657fe5b049392505050565b6000808211611df4576040805162461bcd60e51b815260206004820152601860248201527f536166654d6174683a206d6f64756c6f206279207a65726f0000000000000000604482015290519081900360640190fd5b818381611dfd57fe5b069392505050565b6000600754600014158015611e1b575042600754105b6040518060400160405280600b81526020016a1b9bdd081cdd185c9d195960aa1b81525090611e8b5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561047257818101518382015260200161045a565b506000611eaa620151806116b6600754426116ff90919063ffffffff16565b9050611ec8611ec061012c6116e484601e611d37565b612134611ece565b91505090565b6000818310611edd57816116f8565b5090919050565b6000600160801b8210610aab5760405162461bcd60e51b8152600401808060200182810382526027815260200180611f296027913960400191505060405180910390fdfe53616665436173743a2076616c756520646f65736e27742066697420696e203132382062697473536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122087e97427d656757580af58c3578bc7d40227b07464c6578cbcf20838cabbcbfe64736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
