{
  "_format": "hh-sol-artifact-1",
  "contractName": "ChugSplashRegistry",
  "sourceName": "contracts/ChugSplashRegistry.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "organizationID",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "managerImpl",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "caller",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "retdata",
          "type": "bytes"
        }
      ],
      "name": "ChugSplashRegistrationFinalized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "contractKindHash",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "adapter",
          "type": "address"
        }
      ],
      "name": "ContractKindAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "string",
          "name": "eventNameHash",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "manager",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "eventName",
          "type": "string"
        }
      ],
      "name": "EventAnnounced",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "string",
          "name": "eventNameHash",
          "type": "string"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "manager",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes",
          "name": "dataHash",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "eventName",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "EventAnnouncedWithData",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "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": "uint256",
          "name": "major",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "minor",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "patch",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "manager",
          "type": "address"
        }
      ],
      "name": "VersionAdded",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "adapters",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_contractKindHash",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_adapter",
          "type": "address"
        }
      ],
      "name": "addContractKind",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_manager",
          "type": "address"
        }
      ],
      "name": "addVersion",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_event",
          "type": "string"
        }
      ],
      "name": "announce",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "_event",
          "type": "string"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "announceWithData",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_organizationID",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "uint256",
              "name": "major",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "minor",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "patch",
              "type": "uint256"
            }
          ],
          "internalType": "struct Version",
          "name": "_version",
          "type": "tuple"
        },
        {
          "internalType": "bytes",
          "name": "_data",
          "type": "bytes"
        }
      ],
      "name": "finalizeRegistration",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "managerImplementations",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "managerProxies",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "projects",
      "outputs": [
        {
          "internalType": "address payable",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "versions",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b5060405161216838038061216883398101604081905261002f91610097565b61003833610047565b61004181610047565b506100c7565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100a957600080fd5b81516001600160a01b03811681146100c057600080fd5b9392505050565b612092806100d66000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80638da5cb5b1161008c578063e91204de11610066578063e91204de14610231578063ea0a523714610278578063f2fde38b1461028b578063f52cc7fd1461029e57600080fd5b80638da5cb5b146101ba578063b696e7fa146101d8578063b96ea12d146101fb57600080fd5b80634b67f1a8116100bd5780634b67f1a814610144578063715018a61461015757806372c6838f1461015f57600080fd5b806311cdf27a146100e4578063204bbec7146100f957806331662fd614610131575b600080fd5b6100f76100f2366004610dfe565b6102b1565b005b61011c610107366004610dfe565b60046020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f761013f366004610efe565b6104b9565b6100f7610152366004610fcc565b61094a565b6100f7610a75565b61019561016d366004610ff8565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610128565b60005473ffffffffffffffffffffffffffffffffffffffff16610195565b61011c6101e6366004610dfe565b60026020526000908152604090205460ff1681565b610195610209366004610ff8565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61019561023f366004611011565b600560209081526000938452604080852082529284528284209052825290205473ffffffffffffffffffffffffffffffffffffffff1681565b6100f761028636600461103d565b610a89565b6100f7610299366004610dfe565b610b60565b6100f76102ac36600461107a565b610bfd565b6102b9610cec565b60008173ffffffffffffffffffffffffffffffffffffffff166354fd4d506040518163ffffffff1660e01b8152600401606060405180830381865afa158015610306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032a91906110de565b80516020808301516040808501516000858152600585528281208482528552828120828252909452922054939450919273ffffffffffffffffffffffffffffffffffffffff16156103e85760405162461bcd60e51b815260206004820152602760248201527f4368756753706c61736852656769737472793a2076657273696f6e20616c726560448201527f616479207365740000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516600081815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905586835260058252808320868452825280832085845282529182902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905590519182528291849186917fad4f648400b850e9d053dbbd943dc1f16f1dd948913439a82886d60b875fa961910160405180910390a45050505050565b60008481526001602052604090205473ffffffffffffffffffffffffffffffffffffffff16156105515760405162461bcd60e51b815260206004820152602d60248201527f4368756753706c61736852656769737472793a206f726720494420616c72656160448201527f647920726567697374657265640000000000000000000000000000000000000060648201526084016103df565b81516000908152600560209081526040808320828601518452825280832081860151845282528083205473ffffffffffffffffffffffffffffffffffffffff1680845260049092529091205460ff166106125760405162461bcd60e51b815260206004820152602b60248201527f4368756753706c61736852656769737472793a20696e76616c6964206d616e6160448201527f6765722076657273696f6e00000000000000000000000000000000000000000060648201526084016103df565b600085303060405161062390610dc8565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f5905080158015610667573d6000803e3d6000fd5b50905073ffffffffffffffffffffffffffffffffffffffff81166106f35760405162461bcd60e51b815260206004820152603260248201527f4368756753706c61736852656769737472793a206661696c656420746f20646560448201527f706c6f79206d616e616765722070726f7879000000000000000000000000000060648201526084016103df565b600086815260016020818152604080842080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8716908117909155808552600290925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051634f1ef286908590610792908890602401611196565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f439fab9100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526108229291906004016111a9565b6000604051808303816000875af1158015610841573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261086991908101906111d8565b6040517f8f28397000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015291925090831690638f28397090602401600060405180830381600087803b1580156108d657600080fd5b505af11580156108ea573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16877f34f01ac8697184bb2b594a525aaf915e28334b8ee9ce73d80e3d0d08fadcd3418833856040516109399392919061124f565b60405180910390a350505050505050565b610952610cec565b60008281526003602052604090205473ffffffffffffffffffffffffffffffffffffffff16156109ea5760405162461bcd60e51b815260206004820152603960248201527f4368756753706c61736852656769737472793a20636f6e7472616374206b696e60448201527f642068617320616e206578697374696e6720616461707465720000000000000060648201526084016103df565b60008281526003602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fb2ae55a73412ceef617c2ecead73f8d660a4904740fa33d050ae5d8b517d7b47910160405180910390a15050565b610a7d610cec565b610a876000610d53565b565b3360009081526002602052604090205460ff16610b0e5760405162461bcd60e51b815260206004820152603c60248201527f4368756753706c61736852656769737472793a206576656e74732063616e206f60448201527f6e6c7920626520616e6e6f756e636564206279206d616e61676572730000000060648201526084016103df565b6040513390610b1e908390611288565b60405180910390207f795f66a5da2addfeb09f1b32396ff2be31a38ebe0f85fae32133a226dbe065b383604051610b559190611196565b60405180910390a350565b610b68610cec565b73ffffffffffffffffffffffffffffffffffffffff8116610bf15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103df565b610bfa81610d53565b50565b3360009081526002602052604090205460ff16610c825760405162461bcd60e51b815260206004820152603c60248201527f4368756753706c61736852656769737472793a206576656e74732063616e206f60448201527f6e6c7920626520616e6e6f756e636564206279206d616e61676572730000000060648201526084016103df565b80604051610c909190611288565b604051908190038120903390610ca7908590611288565b60405180910390207f524ccd226c22cefbc337f02a4ec771a77e2df0925309645b4e79d650f11e2aa08585604051610ce09291906112a4565b60405180910390a45050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a875760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103df565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610dbc806112ca83390190565b803573ffffffffffffffffffffffffffffffffffffffff81168114610df957600080fd5b919050565b600060208284031215610e1057600080fd5b610e1982610dd5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610e7857610e78610e20565b604052919050565b600067ffffffffffffffff821115610e9a57610e9a610e20565b50601f01601f191660200190565b600082601f830112610eb957600080fd5b8135610ecc610ec782610e80565b610e4f565b818152846020838601011115610ee157600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008084860360c0811215610f1557600080fd5b85359450610f2560208701610dd5565b935060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082011215610f5757600080fd5b506040516060810167ffffffffffffffff8282108183111715610f7c57610f7c610e20565b8160405260408801358352606088013560208401526080880135604084015282945060a0880135925080831115610fb257600080fd5b5050610fc087828801610ea8565b91505092959194509250565b60008060408385031215610fdf57600080fd5b82359150610fef60208401610dd5565b90509250929050565b60006020828403121561100a57600080fd5b5035919050565b60008060006060848603121561102657600080fd5b505081359360208301359350604090920135919050565b60006020828403121561104f57600080fd5b813567ffffffffffffffff81111561106657600080fd5b61107284828501610ea8565b949350505050565b6000806040838503121561108d57600080fd5b823567ffffffffffffffff808211156110a557600080fd5b6110b186838701610ea8565b935060208501359150808211156110c757600080fd5b506110d485828601610ea8565b9150509250929050565b6000606082840312156110f057600080fd5b6040516060810181811067ffffffffffffffff8211171561111357611113610e20565b80604052508251815260208301516020820152604083015160408201528091505092915050565b60005b8381101561115557818101518382015260200161113d565b83811115611164576000848401525b50505050565b6000815180845261118281602086016020860161113a565b601f01601f19169290920160200192915050565b602081526000610e19602083018461116a565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611072604083018461116a565b6000602082840312156111ea57600080fd5b815167ffffffffffffffff81111561120157600080fd5b8201601f8101841361121257600080fd5b8051611220610ec782610e80565b81815285602083850101111561123557600080fd5b61124682602083016020860161113a565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808616835280851660208401525060606040830152611246606083018461116a565b6000825161129a81846020870161113a565b9190910192915050565b6040815260006112b7604083018561116a565b8281036020840152611246818561116a56fe60a0604052604051610dbc380380610dbc833981016040819052610022916100cb565b8061002c8161003f565b50506001600160a01b0316608052610105565b6000610057600080516020610d9c8339815191525490565b600080516020610d9c833981519152839055604080516001600160a01b038084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b6001600160a01b03811681146100c857600080fd5b50565b600080604083850312156100de57600080fd5b82516100e9816100b3565b60208401519092506100fa816100b3565b809150509250929050565b608051610c6e61012e60003960008181610108015281816103c001526106510152610c6e6000f3fe6080604052600436106100695760003560e01c80637b103999116100435780637b103999146100f65780638f2839701461012a578063f851a4401461014a57610078565b80633659cfe6146100805780634f1ef286146100a05780635c60da1b146100c957610078565b366100785761007661015f565b005b61007661015f565b34801561008c57600080fd5b5061007661009b366004610b1e565b61022f565b6100b36100ae366004610b39565b6104b8565b6040516100c09190610bbc565b60405180910390f35b3480156100d557600080fd5b506100de610753565b6040516001600160a01b0390911681526020016100c0565b34801561010257600080fd5b506100de7f000000000000000000000000000000000000000000000000000000000000000081565b34801561013657600080fd5b50610076610145366004610b1e565b6107d0565b34801561015657600080fd5b506100de61081d565b60006101897f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b90506001600160a01b03811661020c5760405162461bcd60e51b815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e80610229573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103546001600160a01b0316336001600160a01b0316148061026e575033155b156104ad57600061029d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b90506001600160a01b03811615806103145750806001600160a01b031663e8ea2d086040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103129190610c2f565b155b6103865760405162461bcd60e51b815260206004820152602d60248201527f4368756753706c6173684d616e6167657250726f78793a20657865637574696f60448201527f6e20696e2070726f6772657373000000000000000000000000000000000000006064820152608401610203565b6040517f204bbec70000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015283917f00000000000000000000000000000000000000000000000000000000000000009091169063204bbec790602401602060405180830381865afa158015610409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042d9190610c2f565b61049f5760405162461bcd60e51b815260206004820152602a60248201527f4368756753706c6173684d616e6167657250726f78793a20756e617070726f7660448201527f6564206d616e61676572000000000000000000000000000000000000000000006064820152608401610203565b6104a88361088f565b505050565b6104b561015f565b50565b60606104e27fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6001600160a01b0316336001600160a01b031614806104ff575033155b1561074457600061052e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b90506001600160a01b03811615806105a55750806001600160a01b031663e8ea2d086040518163ffffffff1660e01b8152600401602060405180830381865afa15801561057f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a39190610c2f565b155b6106175760405162461bcd60e51b815260206004820152602d60248201527f4368756753706c6173684d616e6167657250726f78793a20657865637574696f60448201527f6e20696e2070726f6772657373000000000000000000000000000000000000006064820152608401610203565b6040517f204bbec70000000000000000000000000000000000000000000000000000000081526001600160a01b03808716600483015286917f00000000000000000000000000000000000000000000000000000000000000009091169063204bbec790602401602060405180830381865afa15801561069a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106be9190610c2f565b6107305760405162461bcd60e51b815260206004820152602a60248201527f4368756753706c6173684d616e6167657250726f78793a20756e617070726f7660448201527f6564206d616e61676572000000000000000000000000000000000000000000006064820152608401610203565b61073b8686866108dc565b9250505061074c565b61074c61015f565b9392505050565b600061077d7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6001600160a01b0316336001600160a01b0316148061079a575033155b156107c557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6107cd61015f565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103546001600160a01b0316336001600160a01b0316148061080f575033155b156104ad576104b581610a0f565b60006108477fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6001600160a01b0316336001600160a01b03161480610864575033155b156107c557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103546001600160a01b0316336001600160a01b031614806108ce575033155b156104ad576104b581610aa7565b60606109067fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6001600160a01b0316336001600160a01b03161480610923575033155b156107445761093184610aa7565b600080856001600160a01b0316858560405161094e929190610c51565b600060405180830381855af49150503d8060008114610989576040519150601f19603f3d011682016040523d82523d6000602084013e61098e565b606091505b509150915081610a065760405162461bcd60e51b815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c6564000000000000006064820152608401610203565b915061074c9050565b6000610a397fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103839055604080516001600160a01b038084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8190556040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b80356001600160a01b0381168114610b1957600080fd5b919050565b600060208284031215610b3057600080fd5b61074c82610b02565b600080600060408486031215610b4e57600080fd5b610b5784610b02565b9250602084013567ffffffffffffffff80821115610b7457600080fd5b818601915086601f830112610b8857600080fd5b813581811115610b9757600080fd5b876020828501011115610ba957600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b81811015610be957858101830151858201604001528201610bcd565b81811115610bfb576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600060208284031215610c4157600080fd5b8151801515811461074c57600080fd5b818382376000910190815291905056fea164736f6c634300080f000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103a164736f6c634300080f000a",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100df5760003560e01c80638da5cb5b1161008c578063e91204de11610066578063e91204de14610231578063ea0a523714610278578063f2fde38b1461028b578063f52cc7fd1461029e57600080fd5b80638da5cb5b146101ba578063b696e7fa146101d8578063b96ea12d146101fb57600080fd5b80634b67f1a8116100bd5780634b67f1a814610144578063715018a61461015757806372c6838f1461015f57600080fd5b806311cdf27a146100e4578063204bbec7146100f957806331662fd614610131575b600080fd5b6100f76100f2366004610dfe565b6102b1565b005b61011c610107366004610dfe565b60046020526000908152604090205460ff1681565b60405190151581526020015b60405180910390f35b6100f761013f366004610efe565b6104b9565b6100f7610152366004610fcc565b61094a565b6100f7610a75565b61019561016d366004610ff8565b60036020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610128565b60005473ffffffffffffffffffffffffffffffffffffffff16610195565b61011c6101e6366004610dfe565b60026020526000908152604090205460ff1681565b610195610209366004610ff8565b60016020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b61019561023f366004611011565b600560209081526000938452604080852082529284528284209052825290205473ffffffffffffffffffffffffffffffffffffffff1681565b6100f761028636600461103d565b610a89565b6100f7610299366004610dfe565b610b60565b6100f76102ac36600461107a565b610bfd565b6102b9610cec565b60008173ffffffffffffffffffffffffffffffffffffffff166354fd4d506040518163ffffffff1660e01b8152600401606060405180830381865afa158015610306573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032a91906110de565b80516020808301516040808501516000858152600585528281208482528552828120828252909452922054939450919273ffffffffffffffffffffffffffffffffffffffff16156103e85760405162461bcd60e51b815260206004820152602760248201527f4368756753706c61736852656769737472793a2076657273696f6e20616c726560448201527f616479207365740000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8516600081815260046020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905586835260058252808320868452825280832085845282529182902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905590519182528291849186917fad4f648400b850e9d053dbbd943dc1f16f1dd948913439a82886d60b875fa961910160405180910390a45050505050565b60008481526001602052604090205473ffffffffffffffffffffffffffffffffffffffff16156105515760405162461bcd60e51b815260206004820152602d60248201527f4368756753706c61736852656769737472793a206f726720494420616c72656160448201527f647920726567697374657265640000000000000000000000000000000000000060648201526084016103df565b81516000908152600560209081526040808320828601518452825280832081860151845282528083205473ffffffffffffffffffffffffffffffffffffffff1680845260049092529091205460ff166106125760405162461bcd60e51b815260206004820152602b60248201527f4368756753706c61736852656769737472793a20696e76616c6964206d616e6160448201527f6765722076657273696f6e00000000000000000000000000000000000000000060648201526084016103df565b600085303060405161062390610dc8565b73ffffffffffffffffffffffffffffffffffffffff9283168152911660208201526040018190604051809103906000f5905080158015610667573d6000803e3d6000fd5b50905073ffffffffffffffffffffffffffffffffffffffff81166106f35760405162461bcd60e51b815260206004820152603260248201527f4368756753706c61736852656769737472793a206661696c656420746f20646560448201527f706c6f79206d616e616765722070726f7879000000000000000000000000000060648201526084016103df565b600086815260016020818152604080842080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8716908117909155808552600290925280842080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169093179092559051634f1ef286908590610792908890602401611196565b60408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f439fab9100000000000000000000000000000000000000000000000000000000179052517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526108229291906004016111a9565b6000604051808303816000875af1158015610841573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261086991908101906111d8565b6040517f8f28397000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015291925090831690638f28397090602401600060405180830381600087803b1580156108d657600080fd5b505af11580156108ea573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff16877f34f01ac8697184bb2b594a525aaf915e28334b8ee9ce73d80e3d0d08fadcd3418833856040516109399392919061124f565b60405180910390a350505050505050565b610952610cec565b60008281526003602052604090205473ffffffffffffffffffffffffffffffffffffffff16156109ea5760405162461bcd60e51b815260206004820152603960248201527f4368756753706c61736852656769737472793a20636f6e7472616374206b696e60448201527f642068617320616e206578697374696e6720616461707465720000000000000060648201526084016103df565b60008281526003602090815260409182902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85169081179091558251858152918201527fb2ae55a73412ceef617c2ecead73f8d660a4904740fa33d050ae5d8b517d7b47910160405180910390a15050565b610a7d610cec565b610a876000610d53565b565b3360009081526002602052604090205460ff16610b0e5760405162461bcd60e51b815260206004820152603c60248201527f4368756753706c61736852656769737472793a206576656e74732063616e206f60448201527f6e6c7920626520616e6e6f756e636564206279206d616e61676572730000000060648201526084016103df565b6040513390610b1e908390611288565b60405180910390207f795f66a5da2addfeb09f1b32396ff2be31a38ebe0f85fae32133a226dbe065b383604051610b559190611196565b60405180910390a350565b610b68610cec565b73ffffffffffffffffffffffffffffffffffffffff8116610bf15760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016103df565b610bfa81610d53565b50565b3360009081526002602052604090205460ff16610c825760405162461bcd60e51b815260206004820152603c60248201527f4368756753706c61736852656769737472793a206576656e74732063616e206f60448201527f6e6c7920626520616e6e6f756e636564206279206d616e61676572730000000060648201526084016103df565b80604051610c909190611288565b604051908190038120903390610ca7908590611288565b60405180910390207f524ccd226c22cefbc337f02a4ec771a77e2df0925309645b4e79d650f11e2aa08585604051610ce09291906112a4565b60405180910390a45050565b60005473ffffffffffffffffffffffffffffffffffffffff163314610a875760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016103df565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610dbc806112ca83390190565b803573ffffffffffffffffffffffffffffffffffffffff81168114610df957600080fd5b919050565b600060208284031215610e1057600080fd5b610e1982610dd5565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715610e7857610e78610e20565b604052919050565b600067ffffffffffffffff821115610e9a57610e9a610e20565b50601f01601f191660200190565b600082601f830112610eb957600080fd5b8135610ecc610ec782610e80565b610e4f565b818152846020838601011115610ee157600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008084860360c0811215610f1557600080fd5b85359450610f2560208701610dd5565b935060607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc082011215610f5757600080fd5b506040516060810167ffffffffffffffff8282108183111715610f7c57610f7c610e20565b8160405260408801358352606088013560208401526080880135604084015282945060a0880135925080831115610fb257600080fd5b5050610fc087828801610ea8565b91505092959194509250565b60008060408385031215610fdf57600080fd5b82359150610fef60208401610dd5565b90509250929050565b60006020828403121561100a57600080fd5b5035919050565b60008060006060848603121561102657600080fd5b505081359360208301359350604090920135919050565b60006020828403121561104f57600080fd5b813567ffffffffffffffff81111561106657600080fd5b61107284828501610ea8565b949350505050565b6000806040838503121561108d57600080fd5b823567ffffffffffffffff808211156110a557600080fd5b6110b186838701610ea8565b935060208501359150808211156110c757600080fd5b506110d485828601610ea8565b9150509250929050565b6000606082840312156110f057600080fd5b6040516060810181811067ffffffffffffffff8211171561111357611113610e20565b80604052508251815260208301516020820152604083015160408201528091505092915050565b60005b8381101561115557818101518382015260200161113d565b83811115611164576000848401525b50505050565b6000815180845261118281602086016020860161113a565b601f01601f19169290920160200192915050565b602081526000610e19602083018461116a565b73ffffffffffffffffffffffffffffffffffffffff83168152604060208201526000611072604083018461116a565b6000602082840312156111ea57600080fd5b815167ffffffffffffffff81111561120157600080fd5b8201601f8101841361121257600080fd5b8051611220610ec782610e80565b81815285602083850101111561123557600080fd5b61124682602083016020860161113a565b95945050505050565b600073ffffffffffffffffffffffffffffffffffffffff808616835280851660208401525060606040830152611246606083018461116a565b6000825161129a81846020870161113a565b9190910192915050565b6040815260006112b7604083018561116a565b8281036020840152611246818561116a56fe60a0604052604051610dbc380380610dbc833981016040819052610022916100cb565b8061002c8161003f565b50506001600160a01b0316608052610105565b6000610057600080516020610d9c8339815191525490565b600080516020610d9c833981519152839055604080516001600160a01b038084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b6001600160a01b03811681146100c857600080fd5b50565b600080604083850312156100de57600080fd5b82516100e9816100b3565b60208401519092506100fa816100b3565b809150509250929050565b608051610c6e61012e60003960008181610108015281816103c001526106510152610c6e6000f3fe6080604052600436106100695760003560e01c80637b103999116100435780637b103999146100f65780638f2839701461012a578063f851a4401461014a57610078565b80633659cfe6146100805780634f1ef286146100a05780635c60da1b146100c957610078565b366100785761007661015f565b005b61007661015f565b34801561008c57600080fd5b5061007661009b366004610b1e565b61022f565b6100b36100ae366004610b39565b6104b8565b6040516100c09190610bbc565b60405180910390f35b3480156100d557600080fd5b506100de610753565b6040516001600160a01b0390911681526020016100c0565b34801561010257600080fd5b506100de7f000000000000000000000000000000000000000000000000000000000000000081565b34801561013657600080fd5b50610076610145366004610b1e565b6107d0565b34801561015657600080fd5b506100de61081d565b60006101897f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b90506001600160a01b03811661020c5760405162461bcd60e51b815260206004820152602560248201527f50726f78793a20696d706c656d656e746174696f6e206e6f7420696e6974696160448201527f6c697a656400000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3660008037600080366000845af43d6000803e80610229573d6000fd5b503d6000f35b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103546001600160a01b0316336001600160a01b0316148061026e575033155b156104ad57600061029d7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b90506001600160a01b03811615806103145750806001600160a01b031663e8ea2d086040518163ffffffff1660e01b8152600401602060405180830381865afa1580156102ee573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103129190610c2f565b155b6103865760405162461bcd60e51b815260206004820152602d60248201527f4368756753706c6173684d616e6167657250726f78793a20657865637574696f60448201527f6e20696e2070726f6772657373000000000000000000000000000000000000006064820152608401610203565b6040517f204bbec70000000000000000000000000000000000000000000000000000000081526001600160a01b03808416600483015283917f00000000000000000000000000000000000000000000000000000000000000009091169063204bbec790602401602060405180830381865afa158015610409573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061042d9190610c2f565b61049f5760405162461bcd60e51b815260206004820152602a60248201527f4368756753706c6173684d616e6167657250726f78793a20756e617070726f7660448201527f6564206d616e61676572000000000000000000000000000000000000000000006064820152608401610203565b6104a88361088f565b505050565b6104b561015f565b50565b60606104e27fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6001600160a01b0316336001600160a01b031614806104ff575033155b1561074457600061052e7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b90506001600160a01b03811615806105a55750806001600160a01b031663e8ea2d086040518163ffffffff1660e01b8152600401602060405180830381865afa15801561057f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105a39190610c2f565b155b6106175760405162461bcd60e51b815260206004820152602d60248201527f4368756753706c6173684d616e6167657250726f78793a20657865637574696f60448201527f6e20696e2070726f6772657373000000000000000000000000000000000000006064820152608401610203565b6040517f204bbec70000000000000000000000000000000000000000000000000000000081526001600160a01b03808716600483015286917f00000000000000000000000000000000000000000000000000000000000000009091169063204bbec790602401602060405180830381865afa15801561069a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106be9190610c2f565b6107305760405162461bcd60e51b815260206004820152602a60248201527f4368756753706c6173684d616e6167657250726f78793a20756e617070726f7660448201527f6564206d616e61676572000000000000000000000000000000000000000000006064820152608401610203565b61073b8686866108dc565b9250505061074c565b61074c61015f565b9392505050565b600061077d7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6001600160a01b0316336001600160a01b0316148061079a575033155b156107c557507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5490565b6107cd61015f565b90565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103546001600160a01b0316336001600160a01b0316148061080f575033155b156104ad576104b581610a0f565b60006108477fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6001600160a01b0316336001600160a01b03161480610864575033155b156107c557507fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103546001600160a01b0316336001600160a01b031614806108ce575033155b156104ad576104b581610aa7565b60606109067fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b6001600160a01b0316336001600160a01b03161480610923575033155b156107445761093184610aa7565b600080856001600160a01b0316858560405161094e929190610c51565b600060405180830381855af49150503d8060008114610989576040519150601f19603f3d011682016040523d82523d6000602084013e61098e565b606091505b509150915081610a065760405162461bcd60e51b815260206004820152603960248201527f50726f78793a2064656c656761746563616c6c20746f206e657720696d706c6560448201527f6d656e746174696f6e20636f6e7472616374206661696c6564000000000000006064820152608401610203565b915061074c9050565b6000610a397fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d61035490565b7fb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103839055604080516001600160a01b038084168252851660208201529192507f7e644d79422f17c01e4894b5f4f588d331ebfa28653d42ae832dc59e38c9798f910160405180910390a15050565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc8190556040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b80356001600160a01b0381168114610b1957600080fd5b919050565b600060208284031215610b3057600080fd5b61074c82610b02565b600080600060408486031215610b4e57600080fd5b610b5784610b02565b9250602084013567ffffffffffffffff80821115610b7457600080fd5b818601915086601f830112610b8857600080fd5b813581811115610b9757600080fd5b876020828501011115610ba957600080fd5b6020830194508093505050509250925092565b600060208083528351808285015260005b81811015610be957858101830151858201604001528201610bcd565b81811115610bfb576000604083870101525b50601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016929092016040019392505050565b600060208284031215610c4157600080fd5b8151801515811461074c57600080fd5b818382376000910190815291905056fea164736f6c634300080f000ab53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103a164736f6c634300080f000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
