{
  "_format": "hh-sol-artifact-1",
  "contractName": "xMora",
  "sourceName": "contracts/xMora.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "_mora",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "delegator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "fromDelegate",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "toDelegate",
          "type": "address"
        }
      ],
      "name": "DelegateChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "delegate",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "previousBalance",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newBalance",
          "type": "uint256"
        }
      ],
      "name": "DelegateVotesChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DELEGATION_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "DOMAIN_TYPEHASH",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "name": "checkpoints",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "fromBlock",
          "type": "uint32"
        },
        {
          "internalType": "uint256",
          "name": "votes",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "decimals",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "subtractedValue",
          "type": "uint256"
        }
      ],
      "name": "decreaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "delegatee",
          "type": "address"
        }
      ],
      "name": "delegate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "delegatee",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "nonce",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expiry",
          "type": "uint256"
        },
        {
          "internalType": "uint8",
          "name": "v",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "s",
          "type": "bytes32"
        }
      ],
      "name": "delegateBySig",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "delegator",
          "type": "address"
        }
      ],
      "name": "delegates",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "enter",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "getCurrentVotes",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        }
      ],
      "name": "getPriorVotes",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "addedValue",
          "type": "uint256"
        }
      ],
      "name": "increaseAllowance",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_share",
          "type": "uint256"
        }
      ],
      "name": "leave",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "mora",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_account",
          "type": "address"
        }
      ],
      "name": "moraBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "moraAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_moraAmount",
          "type": "uint256"
        }
      ],
      "name": "moraForXMora",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "xmoraAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "name",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "nonces",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "numCheckpoints",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "symbol",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_xmoraAmount",
          "type": "uint256"
        }
      ],
      "name": "xmoraForMora",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "moraAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b50604051620021d3380380620021d3833981810160405260208110156200003757600080fd5b5051604080518082018252600580825264784d6f726160d81b6020838101918252845180860190955291845264784d4f524160d81b9184019190915281519192916200008691600391620000d6565b5080516200009c906004906020840190620000d6565b5050600580546001600160a01b0390931661010002610100600160a81b031960ff1990941660121793909316929092179091555062000172565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200011957805160ff191683800117855562000149565b8280016001018555821562000149579182015b82811115620001495782518255916020019190600101906200012c565b50620001579291506200015b565b5090565b5b808211156200015757600081556001016200015c565b61205180620001826000396000f3fe608060405234801561001057600080fd5b50600436106101a95760003560e01c806368a4777d116100f9578063a59f3e0c11610097578063c3cda52011610071578063c3cda52014610556578063dd62ed3e1461059d578063e7a324dc146105cb578063f1127ed8146105d3576101a9565b8063a59f3e0c146104e7578063a9059cbb14610504578063b4b5ea5714610530576101a9565b8063782d6fe1116100d3578063782d6fe1146104615780637ecebe001461048d57806395d89b41146104b3578063a457c2d7146104bb576101a9565b806368a4777d146103df5780636fcfff45146103fc57806370a082311461043b576101a9565b806323b872dd1161016657806339509351116101405780633950935114610348578063587cde1e146103745780635c19a95c1461039a57806367dfd4c9146103c2576101a9565b806323b872dd146102d7578063313ce5671461030d57806334a686991461032b576101a9565b806306fdde03146101ae578063095ea7b31461022b5780630e3e22df1461026b57806318160ddd1461028f5780631847ee00146102a957806320606b70146102cf575b600080fd5b6101b6610625565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f05781810151838201526020016101d8565b50505050905090810190601f16801561021d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102576004803603604081101561024157600080fd5b506001600160a01b0381351690602001356106bb565b604080519115158252519081900360200190f35b6102736106d9565b604080516001600160a01b039092168252519081900360200190f35b6102976106ed565b60408051918252519081900360200190f35b610297600480360360208110156102bf57600080fd5b50356001600160a01b03166106f3565b6102976107b7565b610257600480360360608110156102ed57600080fd5b506001600160a01b038135811691602081013590911690604001356107db565b610315610826565b6040805160ff9092168252519081900360200190f35b6102976004803603602081101561034157600080fd5b503561082f565b6102576004803603604081101561035e57600080fd5b506001600160a01b0381351690602001356108df565b6102736004803603602081101561038a57600080fd5b50356001600160a01b0316610932565b6103c0600480360360208110156103b057600080fd5b50356001600160a01b0316610950565b005b6103c0600480360360208110156103d857600080fd5b503561095d565b610297600480360360208110156103f557600080fd5b5035610a69565b6104226004803603602081101561041257600080fd5b50356001600160a01b0316610b35565b6040805163ffffffff9092168252519081900360200190f35b6102976004803603602081101561045157600080fd5b50356001600160a01b0316610b4d565b6102976004803603604081101561047757600080fd5b506001600160a01b038135169060200135610b68565b610297600480360360208110156104a357600080fd5b50356001600160a01b0316610d70565b6101b6610d82565b610257600480360360408110156104d157600080fd5b506001600160a01b038135169060200135610de3565b6103c0600480360360208110156104fd57600080fd5b5035610e4b565b6102576004803603604081101561051a57600080fd5b506001600160a01b038135169060200135610f70565b6102976004803603602081101561054657600080fd5b50356001600160a01b0316610fd2565b6103c0600480360360c081101561056c57600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135611036565b610297600480360360408110156105b357600080fd5b506001600160a01b03813581169160200135166112a9565b6102976112d4565b610605600480360360408110156105e957600080fd5b5080356001600160a01b0316906020013563ffffffff166112f8565b6040805163ffffffff909316835260208301919091528051918290030190f35b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106b15780601f10610686576101008083540402835291602001916106b1565b820191906000526020600020905b81548152906001019060200180831161069457829003601f168201915b5050505050905090565b60006106cf6106c8611325565b8484611329565b5060015b92915050565b60055461010090046001600160a01b031681565b60025490565b6000806106ff83610b4d565b9050600061070b6106ed565b90506107af816107a9600560019054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561077657600080fd5b505afa15801561078a573d6000803e3d6000fd5b505050506040513d60208110156107a057600080fd5b50518590611415565b9061146e565b949350505050565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6000806107e98585856114d5565b90506107f484611557565b6001600160a01b038086166000908152600660205260408082205487841683529120546107af929182169116856115a0565b60055460ff1690565b60008061083a6106ed565b90506108d8816107a9600560019054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156108a557600080fd5b505afa1580156108b9573d6000803e3d6000fd5b505050506040513d60208110156108cf57600080fd5b50518690611415565b9392505050565b60006106cf6108ec611325565b8461092d85600160006108fd611325565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906116cc565b611329565b6001600160a01b039081166000908152600660205260409020541690565b61095a3382611726565b50565b60006109676106ed565b905060006109d4826107a9600560019054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156108a557600080fd5b90506109e033846117bb565b6005546040805163a9059cbb60e01b81523360048201526024810184905290516101009092046001600160a01b03169163a9059cbb916044808201926020929091908290030181600087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b505050506040513d6020811015610a6257600080fd5b5050505050565b600080600560019054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610ace57600080fd5b505afa158015610ae2573d6000803e3d6000fd5b505050506040513d6020811015610af857600080fd5b505190506000610b066106ed565b9050801580610b13575081155b15610b2057839250610b2e565b6107af826107a98684611415565b5050919050565b60086020526000908152604090205463ffffffff1681565b6001600160a01b031660009081526020819052604090205490565b6000438210610ba85760405162461bcd60e51b8152600401808060200182810382526028815260200180611e996028913960400191505060405180910390fd5b6001600160a01b03831660009081526008602052604090205463ffffffff1680610bd65760009150506106d3565b6001600160a01b038416600090815260076020908152604080832063ffffffff600019860181168552925290912054168310610c45576001600160a01b03841660009081526007602090815260408083206000199490940163ffffffff168352929052206001015490506106d3565b6001600160a01b038416600090815260076020908152604080832083805290915290205463ffffffff16831015610c805760009150506106d3565b600060001982015b8163ffffffff168163ffffffff161115610d3957600282820363ffffffff16048103610cb2611dd1565b506001600160a01b038716600090815260076020908152604080832063ffffffff808616855290835292819020815180830190925280549093168082526001909301549181019190915290871415610d14576020015194506106d39350505050565b805163ffffffff16871115610d2b57819350610d32565b6001820392505b5050610c88565b506001600160a01b038516600090815260076020908152604080832063ffffffff9094168352929052206001015491505092915050565b60096020526000908152604090205481565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106b15780601f10610686576101008083540402835291602001916106b1565b60006106cf610df0611325565b8461092d85604051806060016040528060258152602001611ff76025913960016000610e1a611325565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906118b7565b600554604080516370a0823160e01b8152306004820152905160009261010090046001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610e9b57600080fd5b505afa158015610eaf573d6000803e3d6000fd5b505050506040513d6020811015610ec557600080fd5b505190506000610ed36106ed565b9050801580610ee0575081155b15610ef457610eef338461194e565b610f12565b6000610f04836107a98685611415565b9050610f10338261194e565b505b600554604080516323b872dd60e01b81523360048201523060248201526044810186905290516101009092046001600160a01b0316916323b872dd916064808201926020929091908290030181600087803b158015610a3857600080fd5b600080610f7d8484611a3e565b9050610f8884611557565b6108d860066000610f97611325565b6001600160a01b03908116825260208083019390935260409182016000908120548983168252600690945291909120549181169116856115a0565b6001600160a01b03811660009081526008602052604081205463ffffffff1680610ffd5760006108d8565b6001600160a01b038316600090815260076020908152604080832063ffffffff6000198601168452909152902060010154915050919050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866611061610625565b80519060200120611070611a52565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a9052825180850390910181526101408401835280519085012061190160f01b6101608501526101628401829052610182808501829052835180860390910181526101a285018085528151918701919091206000918290526101c2860180865281905260ff8b166101e287015261020286018a90526102228601899052935192965090949293909260019261024280840193601f198301929081900390910190855afa1580156111a3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166111f55760405162461bcd60e51b8152600401808060200182810382526027815260200180611ec16027913960400191505060405180910390fd5b6001600160a01b038116600090815260096020526040902080546001810190915589146112535760405162461bcd60e51b8152600401808060200182810382526023815260200180611e2e6023913960400191505060405180910390fd5b874211156112925760405162461bcd60e51b8152600401808060200182810382526027815260200180611f096027913960400191505060405180910390fd5b61129c818b611726565b505050505b505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b60076020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b3390565b6001600160a01b03831661136e5760405162461bcd60e51b8152600401808060200182810382526024815260200180611fd36024913960400191505060405180910390fd5b6001600160a01b0382166113b35760405162461bcd60e51b8152600401808060200182810382526022815260200180611e516022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600082611424575060006106d3565b8282028284828161143157fe5b04146108d85760405162461bcd60e51b8152600401808060200182810382526021815260200180611ee86021913960400191505060405180910390fd5b60008082116114c4576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816114cd57fe5b049392505050565b60006114e2848484611a56565b61154d846114ee611325565b61092d85604051806060016040528060288152602001611f30602891396001600160a01b038a1660009081526001602052604081209061152c611325565b6001600160a01b0316815260208101919091526040016000205491906118b7565b5060019392505050565b6001600160a01b038181166000908152600660205260409020541661095a576001600160a01b0316600081815260066020526040902080546001600160a01b0319169091179055565b816001600160a01b0316836001600160a01b0316141580156115c25750600081115b156116c7576001600160a01b03831615611649576001600160a01b03831660009081526008602052604081205463ffffffff169081611602576000611634565b6001600160a01b038516600090815260076020908152604080832063ffffffff60001987011684529091529020600101545b905082810361164586848484611bb1565b5050505b6001600160a01b038216156116c7576001600160a01b03821660009081526008602052604081205463ffffffff1690816116845760006116b6565b6001600160a01b038416600090815260076020908152604080832063ffffffff60001987011684529091529020600101545b90508281016112a185848484611bb1565b505050565b6000828201838110156108d8576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038083166000908152600660205260408120549091169061174d84610b4d565b6001600160a01b0385811660008181526006602052604080822080546001600160a01b031916898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46117b58284836115a0565b50505050565b6001600160a01b0382166118005760405162461bcd60e51b8152600401808060200182810382526021815260200180611f8d6021913960400191505060405180910390fd5b61180c826000836116c7565b61184981604051806060016040528060228152602001611e0c602291396001600160a01b03851660009081526020819052604090205491906118b7565b6001600160a01b03831660009081526020819052604090205560025461186f9082611d16565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600081848411156119465760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561190b5781810151838201526020016118f3565b50505050905090810190601f1680156119385780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b0382166119a9576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6119b5600083836116c7565b6002546119c290826116cc565b6002556001600160a01b0382166000908152602081905260409020546119e890826116cc565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60006106cf611a4b611325565b8484611a56565b4690565b6001600160a01b038316611a9b5760405162461bcd60e51b8152600401808060200182810382526025815260200180611fae6025913960400191505060405180910390fd5b6001600160a01b038216611ae05760405162461bcd60e51b8152600401808060200182810382526023815260200180611de96023913960400191505060405180910390fd5b611aeb8383836116c7565b611b2881604051806060016040528060268152602001611e73602691396001600160a01b03861660009081526020819052604090205491906118b7565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611b5790826116cc565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000611bd543604051806060016040528060358152602001611f5860359139611d73565b905060008463ffffffff16118015611c1e57506001600160a01b038516600090815260076020908152604080832063ffffffff6000198901811685529252909120548282169116145b15611c5b576001600160a01b038516600090815260076020908152604080832063ffffffff60001989011684529091529020600101829055611ccc565b60408051808201825263ffffffff808416825260208083018681526001600160a01b038a166000818152600784528681208b8616825284528681209551865490861663ffffffff19918216178755925160019687015590815260089092529390208054928801909116919092161790555b604080518481526020810184905281516001600160a01b038816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b600082821115611d6d576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000816401000000008410611dc95760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561190b5781810151838201526020016118f3565b509192915050565b60408051808201909152600080825260208201529056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365784d4f52413a3a64656c656761746542795369673a20696e76616c6964206e6f6e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365784d4f52413a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e6564784d4f52413a3a64656c656761746542795369673a20696e76616c6964207369676e6174757265536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77784d4f52413a3a64656c656761746542795369673a207369676e6174757265206578706972656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365784d4f52413a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f40e44f6a4b8ed61b7a41c984c482d62c43391a0f97b74a41bb16fdcc4c91d7d64736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101a95760003560e01c806368a4777d116100f9578063a59f3e0c11610097578063c3cda52011610071578063c3cda52014610556578063dd62ed3e1461059d578063e7a324dc146105cb578063f1127ed8146105d3576101a9565b8063a59f3e0c146104e7578063a9059cbb14610504578063b4b5ea5714610530576101a9565b8063782d6fe1116100d3578063782d6fe1146104615780637ecebe001461048d57806395d89b41146104b3578063a457c2d7146104bb576101a9565b806368a4777d146103df5780636fcfff45146103fc57806370a082311461043b576101a9565b806323b872dd1161016657806339509351116101405780633950935114610348578063587cde1e146103745780635c19a95c1461039a57806367dfd4c9146103c2576101a9565b806323b872dd146102d7578063313ce5671461030d57806334a686991461032b576101a9565b806306fdde03146101ae578063095ea7b31461022b5780630e3e22df1461026b57806318160ddd1461028f5780631847ee00146102a957806320606b70146102cf575b600080fd5b6101b6610625565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101f05781810151838201526020016101d8565b50505050905090810190601f16801561021d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6102576004803603604081101561024157600080fd5b506001600160a01b0381351690602001356106bb565b604080519115158252519081900360200190f35b6102736106d9565b604080516001600160a01b039092168252519081900360200190f35b6102976106ed565b60408051918252519081900360200190f35b610297600480360360208110156102bf57600080fd5b50356001600160a01b03166106f3565b6102976107b7565b610257600480360360608110156102ed57600080fd5b506001600160a01b038135811691602081013590911690604001356107db565b610315610826565b6040805160ff9092168252519081900360200190f35b6102976004803603602081101561034157600080fd5b503561082f565b6102576004803603604081101561035e57600080fd5b506001600160a01b0381351690602001356108df565b6102736004803603602081101561038a57600080fd5b50356001600160a01b0316610932565b6103c0600480360360208110156103b057600080fd5b50356001600160a01b0316610950565b005b6103c0600480360360208110156103d857600080fd5b503561095d565b610297600480360360208110156103f557600080fd5b5035610a69565b6104226004803603602081101561041257600080fd5b50356001600160a01b0316610b35565b6040805163ffffffff9092168252519081900360200190f35b6102976004803603602081101561045157600080fd5b50356001600160a01b0316610b4d565b6102976004803603604081101561047757600080fd5b506001600160a01b038135169060200135610b68565b610297600480360360208110156104a357600080fd5b50356001600160a01b0316610d70565b6101b6610d82565b610257600480360360408110156104d157600080fd5b506001600160a01b038135169060200135610de3565b6103c0600480360360208110156104fd57600080fd5b5035610e4b565b6102576004803603604081101561051a57600080fd5b506001600160a01b038135169060200135610f70565b6102976004803603602081101561054657600080fd5b50356001600160a01b0316610fd2565b6103c0600480360360c081101561056c57600080fd5b506001600160a01b038135169060208101359060408101359060ff6060820135169060808101359060a00135611036565b610297600480360360408110156105b357600080fd5b506001600160a01b03813581169160200135166112a9565b6102976112d4565b610605600480360360408110156105e957600080fd5b5080356001600160a01b0316906020013563ffffffff166112f8565b6040805163ffffffff909316835260208301919091528051918290030190f35b60038054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106b15780601f10610686576101008083540402835291602001916106b1565b820191906000526020600020905b81548152906001019060200180831161069457829003601f168201915b5050505050905090565b60006106cf6106c8611325565b8484611329565b5060015b92915050565b60055461010090046001600160a01b031681565b60025490565b6000806106ff83610b4d565b9050600061070b6106ed565b90506107af816107a9600560019054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561077657600080fd5b505afa15801561078a573d6000803e3d6000fd5b505050506040513d60208110156107a057600080fd5b50518590611415565b9061146e565b949350505050565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6000806107e98585856114d5565b90506107f484611557565b6001600160a01b038086166000908152600660205260408082205487841683529120546107af929182169116856115a0565b60055460ff1690565b60008061083a6106ed565b90506108d8816107a9600560019054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156108a557600080fd5b505afa1580156108b9573d6000803e3d6000fd5b505050506040513d60208110156108cf57600080fd5b50518690611415565b9392505050565b60006106cf6108ec611325565b8461092d85600160006108fd611325565b6001600160a01b03908116825260208083019390935260409182016000908120918c1681529252902054906116cc565b611329565b6001600160a01b039081166000908152600660205260409020541690565b61095a3382611726565b50565b60006109676106ed565b905060006109d4826107a9600560019054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b1580156108a557600080fd5b90506109e033846117bb565b6005546040805163a9059cbb60e01b81523360048201526024810184905290516101009092046001600160a01b03169163a9059cbb916044808201926020929091908290030181600087803b158015610a3857600080fd5b505af1158015610a4c573d6000803e3d6000fd5b505050506040513d6020811015610a6257600080fd5b5050505050565b600080600560019054906101000a90046001600160a01b03166001600160a01b03166370a08231306040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610ace57600080fd5b505afa158015610ae2573d6000803e3d6000fd5b505050506040513d6020811015610af857600080fd5b505190506000610b066106ed565b9050801580610b13575081155b15610b2057839250610b2e565b6107af826107a98684611415565b5050919050565b60086020526000908152604090205463ffffffff1681565b6001600160a01b031660009081526020819052604090205490565b6000438210610ba85760405162461bcd60e51b8152600401808060200182810382526028815260200180611e996028913960400191505060405180910390fd5b6001600160a01b03831660009081526008602052604090205463ffffffff1680610bd65760009150506106d3565b6001600160a01b038416600090815260076020908152604080832063ffffffff600019860181168552925290912054168310610c45576001600160a01b03841660009081526007602090815260408083206000199490940163ffffffff168352929052206001015490506106d3565b6001600160a01b038416600090815260076020908152604080832083805290915290205463ffffffff16831015610c805760009150506106d3565b600060001982015b8163ffffffff168163ffffffff161115610d3957600282820363ffffffff16048103610cb2611dd1565b506001600160a01b038716600090815260076020908152604080832063ffffffff808616855290835292819020815180830190925280549093168082526001909301549181019190915290871415610d14576020015194506106d39350505050565b805163ffffffff16871115610d2b57819350610d32565b6001820392505b5050610c88565b506001600160a01b038516600090815260076020908152604080832063ffffffff9094168352929052206001015491505092915050565b60096020526000908152604090205481565b60048054604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152606093909290918301828280156106b15780601f10610686576101008083540402835291602001916106b1565b60006106cf610df0611325565b8461092d85604051806060016040528060258152602001611ff76025913960016000610e1a611325565b6001600160a01b03908116825260208083019390935260409182016000908120918d168152925290205491906118b7565b600554604080516370a0823160e01b8152306004820152905160009261010090046001600160a01b0316916370a08231916024808301926020929190829003018186803b158015610e9b57600080fd5b505afa158015610eaf573d6000803e3d6000fd5b505050506040513d6020811015610ec557600080fd5b505190506000610ed36106ed565b9050801580610ee0575081155b15610ef457610eef338461194e565b610f12565b6000610f04836107a98685611415565b9050610f10338261194e565b505b600554604080516323b872dd60e01b81523360048201523060248201526044810186905290516101009092046001600160a01b0316916323b872dd916064808201926020929091908290030181600087803b158015610a3857600080fd5b600080610f7d8484611a3e565b9050610f8884611557565b6108d860066000610f97611325565b6001600160a01b03908116825260208083019390935260409182016000908120548983168252600690945291909120549181169116856115a0565b6001600160a01b03811660009081526008602052604081205463ffffffff1680610ffd5760006108d8565b6001600160a01b038316600090815260076020908152604080832063ffffffff6000198601168452909152902060010154915050919050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866611061610625565b80519060200120611070611a52565b60408051602080820195909552808201939093526060830191909152306080808401919091528151808403909101815260a0830182528051908401207fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf60c08401526001600160a01b038b1660e084015261010083018a90526101208084018a9052825180850390910181526101408401835280519085012061190160f01b6101608501526101628401829052610182808501829052835180860390910181526101a285018085528151918701919091206000918290526101c2860180865281905260ff8b166101e287015261020286018a90526102228601899052935192965090949293909260019261024280840193601f198301929081900390910190855afa1580156111a3573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166111f55760405162461bcd60e51b8152600401808060200182810382526027815260200180611ec16027913960400191505060405180910390fd5b6001600160a01b038116600090815260096020526040902080546001810190915589146112535760405162461bcd60e51b8152600401808060200182810382526023815260200180611e2e6023913960400191505060405180910390fd5b874211156112925760405162461bcd60e51b8152600401808060200182810382526027815260200180611f096027913960400191505060405180910390fd5b61129c818b611726565b505050505b505050505050565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b60076020908152600092835260408084209091529082529020805460019091015463ffffffff9091169082565b3390565b6001600160a01b03831661136e5760405162461bcd60e51b8152600401808060200182810382526024815260200180611fd36024913960400191505060405180910390fd5b6001600160a01b0382166113b35760405162461bcd60e51b8152600401808060200182810382526022815260200180611e516022913960400191505060405180910390fd5b6001600160a01b03808416600081815260016020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b600082611424575060006106d3565b8282028284828161143157fe5b04146108d85760405162461bcd60e51b8152600401808060200182810382526021815260200180611ee86021913960400191505060405180910390fd5b60008082116114c4576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816114cd57fe5b049392505050565b60006114e2848484611a56565b61154d846114ee611325565b61092d85604051806060016040528060288152602001611f30602891396001600160a01b038a1660009081526001602052604081209061152c611325565b6001600160a01b0316815260208101919091526040016000205491906118b7565b5060019392505050565b6001600160a01b038181166000908152600660205260409020541661095a576001600160a01b0316600081815260066020526040902080546001600160a01b0319169091179055565b816001600160a01b0316836001600160a01b0316141580156115c25750600081115b156116c7576001600160a01b03831615611649576001600160a01b03831660009081526008602052604081205463ffffffff169081611602576000611634565b6001600160a01b038516600090815260076020908152604080832063ffffffff60001987011684529091529020600101545b905082810361164586848484611bb1565b5050505b6001600160a01b038216156116c7576001600160a01b03821660009081526008602052604081205463ffffffff1690816116845760006116b6565b6001600160a01b038416600090815260076020908152604080832063ffffffff60001987011684529091529020600101545b90508281016112a185848484611bb1565b505050565b6000828201838110156108d8576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038083166000908152600660205260408120549091169061174d84610b4d565b6001600160a01b0385811660008181526006602052604080822080546001600160a01b031916898616908117909155905194955093928616927f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f9190a46117b58284836115a0565b50505050565b6001600160a01b0382166118005760405162461bcd60e51b8152600401808060200182810382526021815260200180611f8d6021913960400191505060405180910390fd5b61180c826000836116c7565b61184981604051806060016040528060228152602001611e0c602291396001600160a01b03851660009081526020819052604090205491906118b7565b6001600160a01b03831660009081526020819052604090205560025461186f9082611d16565b6002556040805182815290516000916001600160a01b038516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b600081848411156119465760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561190b5781810151838201526020016118f3565b50505050905090810190601f1680156119385780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b0382166119a9576040805162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015290519081900360640190fd5b6119b5600083836116c7565b6002546119c290826116cc565b6002556001600160a01b0382166000908152602081905260409020546119e890826116cc565b6001600160a01b0383166000818152602081815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b60006106cf611a4b611325565b8484611a56565b4690565b6001600160a01b038316611a9b5760405162461bcd60e51b8152600401808060200182810382526025815260200180611fae6025913960400191505060405180910390fd5b6001600160a01b038216611ae05760405162461bcd60e51b8152600401808060200182810382526023815260200180611de96023913960400191505060405180910390fd5b611aeb8383836116c7565b611b2881604051806060016040528060268152602001611e73602691396001600160a01b03861660009081526020819052604090205491906118b7565b6001600160a01b038085166000908152602081905260408082209390935590841681522054611b5790826116cc565b6001600160a01b038084166000818152602081815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6000611bd543604051806060016040528060358152602001611f5860359139611d73565b905060008463ffffffff16118015611c1e57506001600160a01b038516600090815260076020908152604080832063ffffffff6000198901811685529252909120548282169116145b15611c5b576001600160a01b038516600090815260076020908152604080832063ffffffff60001989011684529091529020600101829055611ccc565b60408051808201825263ffffffff808416825260208083018681526001600160a01b038a166000818152600784528681208b8616825284528681209551865490861663ffffffff19918216178755925160019687015590815260089092529390208054928801909116919092161790555b604080518481526020810184905281516001600160a01b038816927fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724928290030190a25050505050565b600082821115611d6d576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6000816401000000008410611dc95760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561190b5781810151838201526020016118f3565b509192915050565b60408051808201909152600080825260208201529056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e6365784d4f52413a3a64656c656761746542795369673a20696e76616c6964206e6f6e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365784d4f52413a3a6765745072696f72566f7465733a206e6f74207965742064657465726d696e6564784d4f52413a3a64656c656761746542795369673a20696e76616c6964207369676e6174757265536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77784d4f52413a3a64656c656761746542795369673a207369676e6174757265206578706972656445524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365784d4f52413a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d6265722065786365656473203332206269747345524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220f40e44f6a4b8ed61b7a41c984c482d62c43391a0f97b74a41bb16fdcc4c91d7d64736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
