{
  "_format": "hh-sol-artifact-1",
  "contractName": "PrizeTierHistory",
  "sourceName": "@pooltogether/v4-periphery/contracts/PrizeTierHistory.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousManager",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newManager",
          "type": "address"
        }
      ],
      "name": "ManagerTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "pendingOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipOffered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint32",
          "name": "drawId",
          "type": "uint32"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "bitRangeSize",
              "type": "uint8"
            },
            {
              "internalType": "uint32",
              "name": "drawId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "maxPicksPerUser",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "expiryDuration",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "endTimestampOffset",
              "type": "uint32"
            },
            {
              "internalType": "uint256",
              "name": "prize",
              "type": "uint256"
            },
            {
              "internalType": "uint32[16]",
              "name": "tiers",
              "type": "uint32[16]"
            }
          ],
          "indexed": false,
          "internalType": "struct IPrizeTierHistory.PrizeTier",
          "name": "prizeTier",
          "type": "tuple"
        }
      ],
      "name": "PrizeTierPushed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "uint32",
          "name": "drawId",
          "type": "uint32"
        },
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "bitRangeSize",
              "type": "uint8"
            },
            {
              "internalType": "uint32",
              "name": "drawId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "maxPicksPerUser",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "expiryDuration",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "endTimestampOffset",
              "type": "uint32"
            },
            {
              "internalType": "uint256",
              "name": "prize",
              "type": "uint256"
            },
            {
              "internalType": "uint32[16]",
              "name": "tiers",
              "type": "uint32[16]"
            }
          ],
          "indexed": false,
          "internalType": "struct IPrizeTierHistory.PrizeTier",
          "name": "prizeTier",
          "type": "tuple"
        }
      ],
      "name": "PrizeTierSet",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "claimOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "count",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getNewestDrawId",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getOldestDrawId",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32",
          "name": "_drawId",
          "type": "uint32"
        }
      ],
      "name": "getPrizeTier",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "bitRangeSize",
              "type": "uint8"
            },
            {
              "internalType": "uint32",
              "name": "drawId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "maxPicksPerUser",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "expiryDuration",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "endTimestampOffset",
              "type": "uint32"
            },
            {
              "internalType": "uint256",
              "name": "prize",
              "type": "uint256"
            },
            {
              "internalType": "uint32[16]",
              "name": "tiers",
              "type": "uint32[16]"
            }
          ],
          "internalType": "struct IPrizeTierHistory.PrizeTier",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getPrizeTierAtIndex",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "bitRangeSize",
              "type": "uint8"
            },
            {
              "internalType": "uint32",
              "name": "drawId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "maxPicksPerUser",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "expiryDuration",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "endTimestampOffset",
              "type": "uint32"
            },
            {
              "internalType": "uint256",
              "name": "prize",
              "type": "uint256"
            },
            {
              "internalType": "uint32[16]",
              "name": "tiers",
              "type": "uint32[16]"
            }
          ],
          "internalType": "struct IPrizeTierHistory.PrizeTier",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint32[]",
          "name": "_drawIds",
          "type": "uint32[]"
        }
      ],
      "name": "getPrizeTierList",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "bitRangeSize",
              "type": "uint8"
            },
            {
              "internalType": "uint32",
              "name": "drawId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "maxPicksPerUser",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "expiryDuration",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "endTimestampOffset",
              "type": "uint32"
            },
            {
              "internalType": "uint256",
              "name": "prize",
              "type": "uint256"
            },
            {
              "internalType": "uint32[16]",
              "name": "tiers",
              "type": "uint32[16]"
            }
          ],
          "internalType": "struct IPrizeTierHistory.PrizeTier[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "manager",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pendingOwner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "bitRangeSize",
              "type": "uint8"
            },
            {
              "internalType": "uint32",
              "name": "drawId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "maxPicksPerUser",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "expiryDuration",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "endTimestampOffset",
              "type": "uint32"
            },
            {
              "internalType": "uint256",
              "name": "prize",
              "type": "uint256"
            },
            {
              "internalType": "uint32[16]",
              "name": "tiers",
              "type": "uint32[16]"
            }
          ],
          "internalType": "struct IPrizeTierHistory.PrizeTier",
          "name": "_prizeTier",
          "type": "tuple"
        }
      ],
      "name": "popAndPush",
      "outputs": [
        {
          "internalType": "uint32",
          "name": "",
          "type": "uint32"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "bitRangeSize",
              "type": "uint8"
            },
            {
              "internalType": "uint32",
              "name": "drawId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "maxPicksPerUser",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "expiryDuration",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "endTimestampOffset",
              "type": "uint32"
            },
            {
              "internalType": "uint256",
              "name": "prize",
              "type": "uint256"
            },
            {
              "internalType": "uint32[16]",
              "name": "tiers",
              "type": "uint32[16]"
            }
          ],
          "internalType": "struct IPrizeTierHistory.PrizeTier",
          "name": "_nextPrizeTier",
          "type": "tuple"
        }
      ],
      "name": "push",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint8",
              "name": "bitRangeSize",
              "type": "uint8"
            },
            {
              "internalType": "uint32",
              "name": "drawId",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "maxPicksPerUser",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "expiryDuration",
              "type": "uint32"
            },
            {
              "internalType": "uint32",
              "name": "endTimestampOffset",
              "type": "uint32"
            },
            {
              "internalType": "uint256",
              "name": "prize",
              "type": "uint256"
            },
            {
              "internalType": "uint32[16]",
              "name": "tiers",
              "type": "uint32[16]"
            }
          ],
          "internalType": "struct IPrizeTierHistory.PrizeTier",
          "name": "_prizeTier",
          "type": "tuple"
        }
      ],
      "name": "replace",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newManager",
          "type": "address"
        }
      ],
      "name": "setManager",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b5060405162001e9338038062001e93833981016040819052620000349162000098565b80620000408162000048565b5050620000ca565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600060208284031215620000ab57600080fd5b81516001600160a01b0381168114620000c357600080fd5b9392505050565b611db980620000da6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063e30c397811610066578063e30c397814610211578063e4dd269014610222578063f114376514610235578063f2fde38b1461024857600080fd5b8063715018a6146101c25780638da5cb5b146101ca578063d0ebdbe7146101db578063d365027d146101fe57600080fd5b8063481c6a75116100d3578063481c6a75146101555780634aac253d1461017a5780634e602cd81461019a5780634e71e0c8146101ba57600080fd5b806306661abd146101055780633659f5431461011b57806339dd7f0814610130578063472b619c1461014d575b600080fd5b6003546040519081526020015b60405180910390f35b61012e6101293660046118c0565b61025b565b005b61013861067a565b60405163ffffffff9091168152602001610112565b6101386106b1565b6002546001600160a01b03165b6040516001600160a01b039091168152602001610112565b61018d6101883660046118f2565b6106d5565b6040516101129190611a8e565b6101ad6101a836600461184b565b610768565b604051610112919061198c565b61012e610833565b61012e6108c1565b6000546001600160a01b0316610162565b6101ee6101e9366004611822565b610936565b6040519015158152602001610112565b61012e61020c3660046118c0565b6109aa565b6001546001600160a01b0316610162565b61018d6102303660046118d9565b610c92565b6101386102433660046118c0565b610d9c565b61012e610256366004611822565b61107a565b3361026e6002546001600160a01b031690565b6001600160a01b0316148061029c5750336102916000546001600160a01b031690565b6001600160a01b0316145b6103135760405162461bcd60e51b815260206004820152602660248201527f4d616e61676561626c652f63616c6c65722d6e6f742d6d616e616765722d6f7260448201527f2d6f776e6572000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60006003805480602002602001604051908101604052809291908181526020016000905b8282101561042f57600084815260208082206040805160e08101825260048702909201805460ff8116845263ffffffff610100820481169585019590955265010000000000810485168484015269010000000000000000008104851660608501526d010000000000000000000000000090049093166080830152600183015460a08301528051610200810191829052919360c0850192916002850191601091908390855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116103db57905050505050508152505081526020019060010190610337565b5050505090506000815111156105e657600380546000919061045390600190611ad7565b8154811061046357610463611ba6565b60009182526020918290206040805160e0810182526004909302909101805460ff8116845263ffffffff610100820481169585019590955265010000000000810485168484015269010000000000000000008104851660608501526d010000000000000000000000000090049093166080830152600183015460a08301528051610200810190915290919060c08301906002830160108282826020028201916000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116105065790505050505050815250509050806020015163ffffffff1683602001602081019061056b91906118f2565b63ffffffff16116105e45760405162461bcd60e51b815260206004820152602a60248201527f5072697a6554696572486973746f72792f6e6f6e2d73657175656e7469616c2d60448201527f7072697a652d7469657200000000000000000000000000000000000000000000606482015260840161030a565b505b6003805460018101825560009190915282906004027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016106278282611bdf565b5061063a905060408301602084016118f2565b63ffffffff167efa6c2cd74e788568ac0c75b649897ed491b894d237486258b420d7e77490bf8360405161066e91906119cf565b60405180910390a25050565b6000600360008154811061069057610690611ba6565b6000918252602090912060049091020154610100900463ffffffff16919050565b60038054600091906106c590600190611ad7565b8154811061069057610690611ba6565b6106dd6117c0565b60008263ffffffff16116107595760405162461bcd60e51b815260206004820152602160248201527f5072697a6554696572486973746f72792f647261772d69642d6e6f742d7a657260448201527f6f00000000000000000000000000000000000000000000000000000000000000606482015260840161030a565b610762826111b6565b92915050565b606060008267ffffffffffffffff81111561078557610785611bbc565b6040519080825280602002602001820160405280156107be57816020015b6107ab6117c0565b8152602001906001900390816107a35790505b50905060005b8381101561082b576107fb8585838181106107e1576107e1611ba6565b90506020020160208101906107f691906118f2565b6111b6565b82828151811061080d5761080d611ba6565b6020026020010181905250808061082390611b57565b9150506107c4565b509392505050565b6001546001600160a01b0316331461088d5760405162461bcd60e51b815260206004820152601f60248201527f4f776e61626c652f63616c6c65722d6e6f742d70656e64696e674f776e657200604482015260640161030a565b6001546108a2906001600160a01b031661145f565b6001805473ffffffffffffffffffffffffffffffffffffffff19169055565b336108d46000546001600160a01b031690565b6001600160a01b03161461092a5760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e65720000000000000000604482015260640161030a565b610934600061145f565b565b60003361094b6000546001600160a01b031690565b6001600160a01b0316146109a15760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e65720000000000000000604482015260640161030a565b610762826114bc565b336109bd6000546001600160a01b031690565b6001600160a01b031614610a135760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e65720000000000000000604482015260640161030a565b60035480610a635760405162461bcd60e51b815260206004820152601f60248201527f5072697a6554696572486973746f72792f6e6f2d7072697a652d746965727300604482015260640161030a565b600080610a71600184611ad7565b9050600060038381548110610a8857610a88611ba6565b60009182526020918290206004909102015463ffffffff6101009091041691508190610aba90604088019088016118f2565b63ffffffff161015610b345760405162461bcd60e51b815260206004820152602560248201527f5072697a6554696572486973746f72792f647261772d69642d6f75742d6f662d60448201527f72616e6765000000000000000000000000000000000000000000000000000000606482015260840161030a565b6000610b52610b4960408801602089016118f2565b858560036115a8565b9050610b6460408701602088016118f2565b63ffffffff1660038281548110610b7d57610b7d611ba6565b6000918252602090912060049091020154610100900463ffffffff1614610c0c5760405162461bcd60e51b815260206004820152602360248201527f5072697a6554696572486973746f72792f647261772d69642d6d7573742d6d6160448201527f7463680000000000000000000000000000000000000000000000000000000000606482015260840161030a565b8560038281548110610c2057610c20611ba6565b90600052602060002090600402018181610c3a9190611bdf565b50610c4d905060408701602088016118f2565b63ffffffff167fec70f602a8e5c0eab140e799c5b7bb34035bd73c6eb882fad555c7c8860817e787604051610c8291906119cf565b60405180910390a2505050505050565b610c9a6117c0565b60038281548110610cad57610cad611ba6565b60009182526020918290206040805160e0810182526004909302909101805460ff8116845263ffffffff610100820481169585019590955265010000000000810485168484015269010000000000000000008104851660608501526d010000000000000000000000000090049093166080830152600183015460a08301528051610200810190915290919060c08301906002830160108282826020028201916000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610d505790505050505050815250509050919050565b600033610db16000546001600160a01b031690565b6001600160a01b031614610e075760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e65720000000000000000604482015260640161030a565b600354610e565760405162461bcd60e51b815260206004820152601e60248201527f5072697a6554696572486973746f72792f686973746f72792d656d7074790000604482015260640161030a565b6003805460009190610e6a90600190611ad7565b81548110610e7a57610e7a611ba6565b60009182526020918290206040805160e0810182526004909302909101805460ff8116845263ffffffff610100820481169585019590955265010000000000810485168484015269010000000000000000008104851660608501526d010000000000000000000000000090049093166080830152600183015460a08301528051610200810190915290919060c08301906002830160108282826020028201916000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610f1d5790505050505050815250509050806020015163ffffffff16836020016020810190610f8291906118f2565b63ffffffff161015610fd65760405162461bcd60e51b815260206004820181905260248201527f5072697a6554696572486973746f72792f696e76616c69642d647261772d6964604482015260640161030a565b60038054849190610fe990600190611ad7565b81548110610ff957610ff9611ba6565b906000526020600020906004020181816110139190611bdf565b50611026905060408401602085016118f2565b63ffffffff167fec70f602a8e5c0eab140e799c5b7bb34035bd73c6eb882fad555c7c8860817e78460405161105b91906119cf565b60405180910390a261107360408401602085016118f2565b9392505050565b3361108d6000546001600160a01b031690565b6001600160a01b0316146110e35760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e65720000000000000000604482015260640161030a565b6001600160a01b03811661115f5760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c652f70656e64696e674f776e65722d6e6f742d7a65726f2d616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161030a565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f239a2ddded15777fa246aed5f7e1a9bc69a39d4eb4a397034d1d85766cca7d4c90600090a250565b6111be6117c0565b6003548061120e5760405162461bcd60e51b815260206004820152601f60248201527f5072697a6554696572486973746f72792f6e6f2d7072697a652d746965727300604482015260640161030a565b60008061121c600184611ad7565b905060006003838154811061123357611233611ba6565b906000526020600020906004020160000160019054906101000a900463ffffffff16905060006003838154811061126c5761126c611ba6565b600091825260209091206004909102015463ffffffff6101009091048116915082811690881610156113065760405162461bcd60e51b815260206004820152602560248201527f5072697a6554696572486973746f72792f647261772d69642d6f75742d6f662d60448201527f72616e6765000000000000000000000000000000000000000000000000000000606482015260840161030a565b8063ffffffff168763ffffffff1610611420576003838154811061132c5761132c611ba6565b60009182526020918290206040805160e0810182526004909302909101805460ff8116845263ffffffff610100820481169585019590955265010000000000810485168484015269010000000000000000008104851660608501526d010000000000000000000000000090049093166080830152600183015460a08301528051610200810190915290919060c08301906002830160108282826020028201916000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116113cf57905050505050508152505095505050505050919050565b8163ffffffff168763ffffffff161415611447576003848154811061132c5761132c611ba6565b61145487858560036116a9565b979650505050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6002546000906001600160a01b039081169083168114156115455760405162461bcd60e51b815260206004820152602360248201527f4d616e61676561626c652f6578697374696e672d6d616e616765722d6164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161030a565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0385811691821790925560405190918316907f9cb45c728de594dab506a1f1a8554e24c8eeaf983618d5ec5dd7bc6f3c49feee90600090a350600192915050565b60008084845b600060026115bc8484611ad7565b6115c69190611ab5565b6115d09084611a9d565b905060008682815481106115e6576115e6611ba6565b600091825260209091206004909102015463ffffffff610100909104811691508a168114156116175750925061169d565b8963ffffffff168163ffffffff16101561163d57611636826001611a9d565b935061165f565b8963ffffffff168163ffffffff16111561165f5761165c600183611ad7565b92505b82841415611696578963ffffffff168163ffffffff161061168e57611685600183611ad7565b9450505061169d565b50925061169d565b50506115ae565b50909695505050505050565b6116b16117c0565b816116be868686866115a8565b815481106116ce576116ce611ba6565b60009182526020918290206040805160e0810182526004909302909101805460ff8116845263ffffffff610100820481169585019590955265010000000000810485168484015269010000000000000000008104851660608501526d010000000000000000000000000090049093166080830152600183015460a08301528051610200810190915290919060c08301906002830160108282826020028201916000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116117715790505050505050815250509050949350505050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915260c081016117fe611803565b905290565b6040518061020001604052806010906020820280368337509192915050565b60006020828403121561183457600080fd5b81356001600160a01b038116811461107357600080fd5b6000806020838503121561185e57600080fd5b823567ffffffffffffffff8082111561187657600080fd5b818501915085601f83011261188a57600080fd5b81358181111561189957600080fd5b8660208260051b85010111156118ae57600080fd5b60209290920196919550909350505050565b60006102c082840312156118d357600080fd5b50919050565b6000602082840312156118eb57600080fd5b5035919050565b60006020828403121561190457600080fd5b813561107381611d5f565b60ff815116825260208082015163ffffffff8082168386015280604085015116604086015280606085015116606086015280608085015116608086015260a084015160a086015260c0840151915060c0850160005b6010811015611983578351831682529284019290840190600101611964565b50505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561169d576119bb83855161190f565b928401926102c092909201916001016119a8565b6102c0810182356119df81611d74565b60ff1682526020838101356119f381611d5f565b63ffffffff90811684830152604085013590611a0e82611d5f565b9081166040850152606085013590611a2582611d5f565b9081166060850152608085013590611a3c82611d5f565b808216608086015260a086013560a086015260c08501915060c0860160005b6010811015611a83578135611a6f81611d5f565b831684529284019290840190600101611a5b565b505050505092915050565b6102c08101610762828461190f565b60008219821115611ab057611ab0611b90565b500190565b600082611ad257634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611ae957611ae9611b90565b500390565b81816000805b6010811015611b4f578335611b0881611d5f565b835463ffffffff600385901b81811b801990931693909116901b1617835560209390930192600490910190601c821115611b4757600091506001830192505b600101611af4565b505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611b8957611b89611b90565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6000813561076281611d5f565b8135611bea81611d74565b60ff811690508154817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082161783556020840135611c2781611d5f565b64ffffffff008160081b16837fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000008416171784555050506040820135611c6b81611d5f565b81547fffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffff16602882901b68ffffffff00000000001617825550611cf0611cb260608401611bd2565b82547fffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffff1660489190911b6cffffffff00000000000000000016178255565b611d41611cff60808401611bd2565b82547fffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffff1660689190911b70ffffffff0000000000000000000000000016178255565b60a08201356001820155611d5b60c0830160028301611aee565b5050565b63ffffffff81168114611d7157600080fd5b50565b60ff81168114611d7157600080fdfea264697066735822122052c377a37764fc87b40bcbfbfff7ee9c0d77ab794c0ef522aa772ca4ad097a4164736f6c63430008060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063e30c397811610066578063e30c397814610211578063e4dd269014610222578063f114376514610235578063f2fde38b1461024857600080fd5b8063715018a6146101c25780638da5cb5b146101ca578063d0ebdbe7146101db578063d365027d146101fe57600080fd5b8063481c6a75116100d3578063481c6a75146101555780634aac253d1461017a5780634e602cd81461019a5780634e71e0c8146101ba57600080fd5b806306661abd146101055780633659f5431461011b57806339dd7f0814610130578063472b619c1461014d575b600080fd5b6003546040519081526020015b60405180910390f35b61012e6101293660046118c0565b61025b565b005b61013861067a565b60405163ffffffff9091168152602001610112565b6101386106b1565b6002546001600160a01b03165b6040516001600160a01b039091168152602001610112565b61018d6101883660046118f2565b6106d5565b6040516101129190611a8e565b6101ad6101a836600461184b565b610768565b604051610112919061198c565b61012e610833565b61012e6108c1565b6000546001600160a01b0316610162565b6101ee6101e9366004611822565b610936565b6040519015158152602001610112565b61012e61020c3660046118c0565b6109aa565b6001546001600160a01b0316610162565b61018d6102303660046118d9565b610c92565b6101386102433660046118c0565b610d9c565b61012e610256366004611822565b61107a565b3361026e6002546001600160a01b031690565b6001600160a01b0316148061029c5750336102916000546001600160a01b031690565b6001600160a01b0316145b6103135760405162461bcd60e51b815260206004820152602660248201527f4d616e61676561626c652f63616c6c65722d6e6f742d6d616e616765722d6f7260448201527f2d6f776e6572000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b60006003805480602002602001604051908101604052809291908181526020016000905b8282101561042f57600084815260208082206040805160e08101825260048702909201805460ff8116845263ffffffff610100820481169585019590955265010000000000810485168484015269010000000000000000008104851660608501526d010000000000000000000000000090049093166080830152600183015460a08301528051610200810191829052919360c0850192916002850191601091908390855b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116103db57905050505050508152505081526020019060010190610337565b5050505090506000815111156105e657600380546000919061045390600190611ad7565b8154811061046357610463611ba6565b60009182526020918290206040805160e0810182526004909302909101805460ff8116845263ffffffff610100820481169585019590955265010000000000810485168484015269010000000000000000008104851660608501526d010000000000000000000000000090049093166080830152600183015460a08301528051610200810190915290919060c08301906002830160108282826020028201916000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116105065790505050505050815250509050806020015163ffffffff1683602001602081019061056b91906118f2565b63ffffffff16116105e45760405162461bcd60e51b815260206004820152602a60248201527f5072697a6554696572486973746f72792f6e6f6e2d73657175656e7469616c2d60448201527f7072697a652d7469657200000000000000000000000000000000000000000000606482015260840161030a565b505b6003805460018101825560009190915282906004027fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b016106278282611bdf565b5061063a905060408301602084016118f2565b63ffffffff167efa6c2cd74e788568ac0c75b649897ed491b894d237486258b420d7e77490bf8360405161066e91906119cf565b60405180910390a25050565b6000600360008154811061069057610690611ba6565b6000918252602090912060049091020154610100900463ffffffff16919050565b60038054600091906106c590600190611ad7565b8154811061069057610690611ba6565b6106dd6117c0565b60008263ffffffff16116107595760405162461bcd60e51b815260206004820152602160248201527f5072697a6554696572486973746f72792f647261772d69642d6e6f742d7a657260448201527f6f00000000000000000000000000000000000000000000000000000000000000606482015260840161030a565b610762826111b6565b92915050565b606060008267ffffffffffffffff81111561078557610785611bbc565b6040519080825280602002602001820160405280156107be57816020015b6107ab6117c0565b8152602001906001900390816107a35790505b50905060005b8381101561082b576107fb8585838181106107e1576107e1611ba6565b90506020020160208101906107f691906118f2565b6111b6565b82828151811061080d5761080d611ba6565b6020026020010181905250808061082390611b57565b9150506107c4565b509392505050565b6001546001600160a01b0316331461088d5760405162461bcd60e51b815260206004820152601f60248201527f4f776e61626c652f63616c6c65722d6e6f742d70656e64696e674f776e657200604482015260640161030a565b6001546108a2906001600160a01b031661145f565b6001805473ffffffffffffffffffffffffffffffffffffffff19169055565b336108d46000546001600160a01b031690565b6001600160a01b03161461092a5760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e65720000000000000000604482015260640161030a565b610934600061145f565b565b60003361094b6000546001600160a01b031690565b6001600160a01b0316146109a15760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e65720000000000000000604482015260640161030a565b610762826114bc565b336109bd6000546001600160a01b031690565b6001600160a01b031614610a135760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e65720000000000000000604482015260640161030a565b60035480610a635760405162461bcd60e51b815260206004820152601f60248201527f5072697a6554696572486973746f72792f6e6f2d7072697a652d746965727300604482015260640161030a565b600080610a71600184611ad7565b9050600060038381548110610a8857610a88611ba6565b60009182526020918290206004909102015463ffffffff6101009091041691508190610aba90604088019088016118f2565b63ffffffff161015610b345760405162461bcd60e51b815260206004820152602560248201527f5072697a6554696572486973746f72792f647261772d69642d6f75742d6f662d60448201527f72616e6765000000000000000000000000000000000000000000000000000000606482015260840161030a565b6000610b52610b4960408801602089016118f2565b858560036115a8565b9050610b6460408701602088016118f2565b63ffffffff1660038281548110610b7d57610b7d611ba6565b6000918252602090912060049091020154610100900463ffffffff1614610c0c5760405162461bcd60e51b815260206004820152602360248201527f5072697a6554696572486973746f72792f647261772d69642d6d7573742d6d6160448201527f7463680000000000000000000000000000000000000000000000000000000000606482015260840161030a565b8560038281548110610c2057610c20611ba6565b90600052602060002090600402018181610c3a9190611bdf565b50610c4d905060408701602088016118f2565b63ffffffff167fec70f602a8e5c0eab140e799c5b7bb34035bd73c6eb882fad555c7c8860817e787604051610c8291906119cf565b60405180910390a2505050505050565b610c9a6117c0565b60038281548110610cad57610cad611ba6565b60009182526020918290206040805160e0810182526004909302909101805460ff8116845263ffffffff610100820481169585019590955265010000000000810485168484015269010000000000000000008104851660608501526d010000000000000000000000000090049093166080830152600183015460a08301528051610200810190915290919060c08301906002830160108282826020028201916000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610d505790505050505050815250509050919050565b600033610db16000546001600160a01b031690565b6001600160a01b031614610e075760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e65720000000000000000604482015260640161030a565b600354610e565760405162461bcd60e51b815260206004820152601e60248201527f5072697a6554696572486973746f72792f686973746f72792d656d7074790000604482015260640161030a565b6003805460009190610e6a90600190611ad7565b81548110610e7a57610e7a611ba6565b60009182526020918290206040805160e0810182526004909302909101805460ff8116845263ffffffff610100820481169585019590955265010000000000810485168484015269010000000000000000008104851660608501526d010000000000000000000000000090049093166080830152600183015460a08301528051610200810190915290919060c08301906002830160108282826020028201916000905b82829054906101000a900463ffffffff1663ffffffff1681526020019060040190602082600301049283019260010382029150808411610f1d5790505050505050815250509050806020015163ffffffff16836020016020810190610f8291906118f2565b63ffffffff161015610fd65760405162461bcd60e51b815260206004820181905260248201527f5072697a6554696572486973746f72792f696e76616c69642d647261772d6964604482015260640161030a565b60038054849190610fe990600190611ad7565b81548110610ff957610ff9611ba6565b906000526020600020906004020181816110139190611bdf565b50611026905060408401602085016118f2565b63ffffffff167fec70f602a8e5c0eab140e799c5b7bb34035bd73c6eb882fad555c7c8860817e78460405161105b91906119cf565b60405180910390a261107360408401602085016118f2565b9392505050565b3361108d6000546001600160a01b031690565b6001600160a01b0316146110e35760405162461bcd60e51b815260206004820152601860248201527f4f776e61626c652f63616c6c65722d6e6f742d6f776e65720000000000000000604482015260640161030a565b6001600160a01b03811661115f5760405162461bcd60e51b815260206004820152602560248201527f4f776e61626c652f70656e64696e674f776e65722d6e6f742d7a65726f2d616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161030a565b6001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f239a2ddded15777fa246aed5f7e1a9bc69a39d4eb4a397034d1d85766cca7d4c90600090a250565b6111be6117c0565b6003548061120e5760405162461bcd60e51b815260206004820152601f60248201527f5072697a6554696572486973746f72792f6e6f2d7072697a652d746965727300604482015260640161030a565b60008061121c600184611ad7565b905060006003838154811061123357611233611ba6565b906000526020600020906004020160000160019054906101000a900463ffffffff16905060006003838154811061126c5761126c611ba6565b600091825260209091206004909102015463ffffffff6101009091048116915082811690881610156113065760405162461bcd60e51b815260206004820152602560248201527f5072697a6554696572486973746f72792f647261772d69642d6f75742d6f662d60448201527f72616e6765000000000000000000000000000000000000000000000000000000606482015260840161030a565b8063ffffffff168763ffffffff1610611420576003838154811061132c5761132c611ba6565b60009182526020918290206040805160e0810182526004909302909101805460ff8116845263ffffffff610100820481169585019590955265010000000000810485168484015269010000000000000000008104851660608501526d010000000000000000000000000090049093166080830152600183015460a08301528051610200810190915290919060c08301906002830160108282826020028201916000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116113cf57905050505050508152505095505050505050919050565b8163ffffffff168763ffffffff161415611447576003848154811061132c5761132c611ba6565b61145487858560036116a9565b979650505050505050565b600080546001600160a01b0383811673ffffffffffffffffffffffffffffffffffffffff19831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6002546000906001600160a01b039081169083168114156115455760405162461bcd60e51b815260206004820152602360248201527f4d616e61676561626c652f6578697374696e672d6d616e616765722d6164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161030a565b6002805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0385811691821790925560405190918316907f9cb45c728de594dab506a1f1a8554e24c8eeaf983618d5ec5dd7bc6f3c49feee90600090a350600192915050565b60008084845b600060026115bc8484611ad7565b6115c69190611ab5565b6115d09084611a9d565b905060008682815481106115e6576115e6611ba6565b600091825260209091206004909102015463ffffffff610100909104811691508a168114156116175750925061169d565b8963ffffffff168163ffffffff16101561163d57611636826001611a9d565b935061165f565b8963ffffffff168163ffffffff16111561165f5761165c600183611ad7565b92505b82841415611696578963ffffffff168163ffffffff161061168e57611685600183611ad7565b9450505061169d565b50925061169d565b50506115ae565b50909695505050505050565b6116b16117c0565b816116be868686866115a8565b815481106116ce576116ce611ba6565b60009182526020918290206040805160e0810182526004909302909101805460ff8116845263ffffffff610100820481169585019590955265010000000000810485168484015269010000000000000000008104851660608501526d010000000000000000000000000090049093166080830152600183015460a08301528051610200810190915290919060c08301906002830160108282826020028201916000905b82829054906101000a900463ffffffff1663ffffffff16815260200190600401906020826003010492830192600103820291508084116117715790505050505050815250509050949350505050565b6040805160e081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915260c081016117fe611803565b905290565b6040518061020001604052806010906020820280368337509192915050565b60006020828403121561183457600080fd5b81356001600160a01b038116811461107357600080fd5b6000806020838503121561185e57600080fd5b823567ffffffffffffffff8082111561187657600080fd5b818501915085601f83011261188a57600080fd5b81358181111561189957600080fd5b8660208260051b85010111156118ae57600080fd5b60209290920196919550909350505050565b60006102c082840312156118d357600080fd5b50919050565b6000602082840312156118eb57600080fd5b5035919050565b60006020828403121561190457600080fd5b813561107381611d5f565b60ff815116825260208082015163ffffffff8082168386015280604085015116604086015280606085015116606086015280608085015116608086015260a084015160a086015260c0840151915060c0850160005b6010811015611983578351831682529284019290840190600101611964565b50505050505050565b6020808252825182820181905260009190848201906040850190845b8181101561169d576119bb83855161190f565b928401926102c092909201916001016119a8565b6102c0810182356119df81611d74565b60ff1682526020838101356119f381611d5f565b63ffffffff90811684830152604085013590611a0e82611d5f565b9081166040850152606085013590611a2582611d5f565b9081166060850152608085013590611a3c82611d5f565b808216608086015260a086013560a086015260c08501915060c0860160005b6010811015611a83578135611a6f81611d5f565b831684529284019290840190600101611a5b565b505050505092915050565b6102c08101610762828461190f565b60008219821115611ab057611ab0611b90565b500190565b600082611ad257634e487b7160e01b600052601260045260246000fd5b500490565b600082821015611ae957611ae9611b90565b500390565b81816000805b6010811015611b4f578335611b0881611d5f565b835463ffffffff600385901b81811b801990931693909116901b1617835560209390930192600490910190601c821115611b4757600091506001830192505b600101611af4565b505050505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415611b8957611b89611b90565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6000813561076281611d5f565b8135611bea81611d74565b60ff811690508154817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082161783556020840135611c2781611d5f565b64ffffffff008160081b16837fffffffffffffffffffffffffffffffffffffffffffffffffffffff00000000008416171784555050506040820135611c6b81611d5f565b81547fffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffffff16602882901b68ffffffff00000000001617825550611cf0611cb260608401611bd2565b82547fffffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffff1660489190911b6cffffffff00000000000000000016178255565b611d41611cff60808401611bd2565b82547fffffffffffffffffffffffffffffff00000000ffffffffffffffffffffffffff1660689190911b70ffffffff0000000000000000000000000016178255565b60a08201356001820155611d5b60c0830160028301611aee565b5050565b63ffffffff81168114611d7157600080fd5b50565b60ff81168114611d7157600080fdfea264697066735822122052c377a37764fc87b40bcbfbfff7ee9c0d77ab794c0ef522aa772ca4ad097a4164736f6c63430008060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
