{
  "_format": "hh-sol-artifact-1",
  "contractName": "GenericLogic",
  "sourceName": "contracts/protocol/libraries/logic/GenericLogic.sol",
  "abi": [],
  "bytecode": "0x610fae610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063e61704241461003a575b600080fd5b61004d610048366004610d25565b610063565b60405161005a9190610e63565b60405180910390f35b600061007c61007736879003870187610dbe565b6102a1565b15806100c457506001600160a01b0389166000908152602087905260409020600701546100c290600160a01b900460ff166100bc36889003880188610dbe565b9061030b565b155b156100d157506001610295565b6100d9610c36565b6001600160a01b038a1660009081526020889052604090206100fa90610390565b508452506020830181905215159050610117576001915050610295565b610133898861012b368a90038a018a610dbe565b8888886103bb565b50608085015250606083018190526040830191909152610157576001915050610295565b6101ee8160000151600a0a6101e88a866001600160a01b031663b3596f078f6040518263ffffffff1660e01b81526004016101929190610e4f565b60206040518083038186803b1580156101aa57600080fd5b505afa1580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e29190610e37565b9061087c565b906108bd565b60a082018190526040820151610203916108ff565b60c08201819052610218576000915050610295565b6102578160c001516101e861023e84602001518560a0015161087c90919063ffffffff16565b608085015160408601516102519161087c565b906108ff565b60e0820181905260c08201516060830151600092610276929190610941565b905061028f61028a36899003890189610dbe565b61096d565b11159150505b98975050505050505050565b6000805b600260ff821610156103005782517f55555555555555555555555555555555555555555555555555555555555555559060ff8316600281106102e357fe5b602002015116156102f8576001915050610306565b6001016102a5565b50600090505b919050565b6000610100821060405180604001604052806002815260200161373760f01b815250906103545760405162461bcd60e51b815260040161034b9190610e6e565b60405180910390fd5b506000608083049050608083069250826002026001018460000151826002811061037a57fe5b60200201516001911c1615159150505b92915050565b5461ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b60008060008060006103cb610c8b565b6103d48a610974565b156103f257600080600080600019955095509550955095505061086e565b600060e08201525b878160e0015110156107cd5760e0810151610416908b906109c9565b61041f576107bd565b60e0810151600090815260208a81526040808320546001600160a01b03166101e085018190528352908d9052902061045681610390565b506080860181905260c08601929092525060a0840191909152600a0a60208301526101e082015160405163b3596f0760e01b81526001600160a01b038a169163b3596f07916104a89190600401610e4f565b60206040518083038186803b1580156104c057600080fd5b505afa1580156104d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f89190610e37565b825260c082015115801590610518575060e0820151610518908c9061030b565b15610636578060040160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b81526004016105609190610e4f565b60206040518083038186803b15801561057857600080fd5b505afa15801561058c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b09190610e37565b60408301819052602083015183516000926105cf92916101e89161087c565b6101208401519091506105e29082610a3b565b61012084015260a0830151610608906105fc90839061087c565b61016085015190610a3b565b61016084015260c083015161062e9061062290839061087c565b61018085015190610a3b565b610180840152505b60e0820151610646908c90610a60565b156107bb578060050160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040161068e9190610e4f565b60206040518083038186803b1580156106a657600080fd5b505afa1580156106ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106de9190610e37565b8260600181815250506107888160060160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b815260040161072d9190610e4f565b60206040518083038186803b15801561074557600080fd5b505afa158015610759573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077d9190610e37565b606084015190610a3b565b60608301819052602083015183516107b4926107a892916101e89161087c565b61014084015190610a3b565b6101408301525b505b60e08101805160010190526103fa565b6000816101200151116107e15760006107f6565b6101208101516101608201516107f6916108bd565b61016082015261012081015161080d576000610822565b610120810151610180820151610822916108bd565b610180820181905261012082015161014083015161083f92610941565b610100820181905261012082015161014083015161016084015161018090940151919850965091945090925090505b965096509650965096915050565b60008261088b5750600061038a565b8282028284828161089857fe5b04146108b65760405162461bcd60e51b815260040161034b90610ef8565b9392505050565b60006108b683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610abe565b60006108b683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610af5565b60008261095157506000196108b6565b6109658361095f8685610b21565b90610b93565b949350505050565b6020015190565b6000805b600260ff821610156109c057825160ff82166002811061099457fe5b60200201511515806109a95750602083015115155b156109b8576000915050610306565b600101610978565b50600192915050565b6000610100821060405180604001604052806002815260200161373760f01b81525090610a095760405162461bcd60e51b815260040161034b9190610e6e565b508251607f83169260809004906002808502919083908110610a2757fe5b6020020151901c6003161515949350505050565b6000828201838110156108b65760405162461bcd60e51b815260040161034b90610ec1565b6000610100821060405180604001604052806002815260200161373760f01b81525090610aa05760405162461bcd60e51b815260040161034b9190610e6e565b508251607f8316926080900490600280850291908390811061037a57fe5b60008183610adf5760405162461bcd60e51b815260040161034b9190610e6e565b506000838581610aeb57fe5b0495945050505050565b60008184841115610b195760405162461bcd60e51b815260040161034b9190610e6e565b505050900390565b6000821580610b2e575081155b15610b3b5750600061038a565b816113881981610b4757fe5b0483111560405180604001604052806002815260200161068760f31b81525090610b845760405162461bcd60e51b815260040161034b9190610e6e565b50506127109102611388010490565b604080518082019091526002815261035360f41b602082015260009082610bcd5760405162461bcd60e51b815260040161034b9190610e6e565b5060408051808201909152600280825261068760f31b6020830152830490670de0b6b3a7640000821904851115610c175760405162461bcd60e51b815260040161034b9190610e6e565b508281670de0b6b3a764000086020181610c2d57fe5b04949350505050565b6040518061014001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b604051806102400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681526020016000151581526020016000151581525090565b600080600080600080600080888a03610140811215610d42578485fd5b8935610d4d81610f60565b985060208a0135610d5d81610f60565b975060408a013596506060808b01359650607f1982011215610d7d578485fd5b5060808901935060e0890135925061010089013591506101208901356001600160a01b0381168114610dad578182fd5b809150509295985092959890939650565b600060608284031215610dcf578081fd5b610dd96040610f39565b83601f840112610de7578182fd5b610df16040610f39565b80846040860187811115610e03578586fd5b855b6002811015610e24578235855260209485019490920191600101610e05565b5091845250356020830152509392505050565b600060208284031215610e48578081fd5b5051919050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b81811015610e9a57858101830151858201604001528201610e7e565b81811115610eab5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60405181810167ffffffffffffffff81118282101715610f5857600080fd5b604052919050565b6001600160a01b0381168114610f7557600080fd5b5056fea2646970667358221220e23bf1c6312d6760f787dad13d86a03e56feae18c7ed8e304d16c62f2366886064736f6c634300060c0033",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106100355760003560e01c8063e61704241461003a575b600080fd5b61004d610048366004610d25565b610063565b60405161005a9190610e63565b60405180910390f35b600061007c61007736879003870187610dbe565b6102a1565b15806100c457506001600160a01b0389166000908152602087905260409020600701546100c290600160a01b900460ff166100bc36889003880188610dbe565b9061030b565b155b156100d157506001610295565b6100d9610c36565b6001600160a01b038a1660009081526020889052604090206100fa90610390565b508452506020830181905215159050610117576001915050610295565b610133898861012b368a90038a018a610dbe565b8888886103bb565b50608085015250606083018190526040830191909152610157576001915050610295565b6101ee8160000151600a0a6101e88a866001600160a01b031663b3596f078f6040518263ffffffff1660e01b81526004016101929190610e4f565b60206040518083038186803b1580156101aa57600080fd5b505afa1580156101be573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101e29190610e37565b9061087c565b906108bd565b60a082018190526040820151610203916108ff565b60c08201819052610218576000915050610295565b6102578160c001516101e861023e84602001518560a0015161087c90919063ffffffff16565b608085015160408601516102519161087c565b906108ff565b60e0820181905260c08201516060830151600092610276929190610941565b905061028f61028a36899003890189610dbe565b61096d565b11159150505b98975050505050505050565b6000805b600260ff821610156103005782517f55555555555555555555555555555555555555555555555555555555555555559060ff8316600281106102e357fe5b602002015116156102f8576001915050610306565b6001016102a5565b50600090505b919050565b6000610100821060405180604001604052806002815260200161373760f01b815250906103545760405162461bcd60e51b815260040161034b9190610e6e565b60405180910390fd5b506000608083049050608083069250826002026001018460000151826002811061037a57fe5b60200201516001911c1615159150505b92915050565b5461ffff80821692601083901c821692602081901c831692603082901c60ff169260409290921c1690565b60008060008060006103cb610c8b565b6103d48a610974565b156103f257600080600080600019955095509550955095505061086e565b600060e08201525b878160e0015110156107cd5760e0810151610416908b906109c9565b61041f576107bd565b60e0810151600090815260208a81526040808320546001600160a01b03166101e085018190528352908d9052902061045681610390565b506080860181905260c08601929092525060a0840191909152600a0a60208301526101e082015160405163b3596f0760e01b81526001600160a01b038a169163b3596f07916104a89190600401610e4f565b60206040518083038186803b1580156104c057600080fd5b505afa1580156104d4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104f89190610e37565b825260c082015115801590610518575060e0820151610518908c9061030b565b15610636578060040160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b81526004016105609190610e4f565b60206040518083038186803b15801561057857600080fd5b505afa15801561058c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105b09190610e37565b60408301819052602083015183516000926105cf92916101e89161087c565b6101208401519091506105e29082610a3b565b61012084015260a0830151610608906105fc90839061087c565b61016085015190610a3b565b61016084015260c083015161062e9061062290839061087c565b61018085015190610a3b565b610180840152505b60e0820151610646908c90610a60565b156107bb578060050160009054906101000a90046001600160a01b03166001600160a01b03166370a082318e6040518263ffffffff1660e01b815260040161068e9190610e4f565b60206040518083038186803b1580156106a657600080fd5b505afa1580156106ba573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106de9190610e37565b8260600181815250506107888160060160009054906101000a90046001600160a01b03166001600160a01b03166370a082318f6040518263ffffffff1660e01b815260040161072d9190610e4f565b60206040518083038186803b15801561074557600080fd5b505afa158015610759573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061077d9190610e37565b606084015190610a3b565b60608301819052602083015183516107b4926107a892916101e89161087c565b61014084015190610a3b565b6101408301525b505b60e08101805160010190526103fa565b6000816101200151116107e15760006107f6565b6101208101516101608201516107f6916108bd565b61016082015261012081015161080d576000610822565b610120810151610180820151610822916108bd565b610180820181905261012082015161014083015161083f92610941565b610100820181905261012082015161014083015161016084015161018090940151919850965091945090925090505b965096509650965096915050565b60008261088b5750600061038a565b8282028284828161089857fe5b04146108b65760405162461bcd60e51b815260040161034b90610ef8565b9392505050565b60006108b683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610abe565b60006108b683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610af5565b60008261095157506000196108b6565b6109658361095f8685610b21565b90610b93565b949350505050565b6020015190565b6000805b600260ff821610156109c057825160ff82166002811061099457fe5b60200201511515806109a95750602083015115155b156109b8576000915050610306565b600101610978565b50600192915050565b6000610100821060405180604001604052806002815260200161373760f01b81525090610a095760405162461bcd60e51b815260040161034b9190610e6e565b508251607f83169260809004906002808502919083908110610a2757fe5b6020020151901c6003161515949350505050565b6000828201838110156108b65760405162461bcd60e51b815260040161034b90610ec1565b6000610100821060405180604001604052806002815260200161373760f01b81525090610aa05760405162461bcd60e51b815260040161034b9190610e6e565b508251607f8316926080900490600280850291908390811061037a57fe5b60008183610adf5760405162461bcd60e51b815260040161034b9190610e6e565b506000838581610aeb57fe5b0495945050505050565b60008184841115610b195760405162461bcd60e51b815260040161034b9190610e6e565b505050900390565b6000821580610b2e575081155b15610b3b5750600061038a565b816113881981610b4757fe5b0483111560405180604001604052806002815260200161068760f31b81525090610b845760405162461bcd60e51b815260040161034b9190610e6e565b50506127109102611388010490565b604080518082019091526002815261035360f41b602082015260009082610bcd5760405162461bcd60e51b815260040161034b9190610e6e565b5060408051808201909152600280825261068760f31b6020830152830490670de0b6b3a7640000821904851115610c175760405162461bcd60e51b815260040161034b9190610e6e565b508281670de0b6b3a764000086020181610c2d57fe5b04949350505050565b6040518061014001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000151581525090565b604051806102400160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160001515815260200160006001600160a01b031681526020016000151581526020016000151581525090565b600080600080600080600080888a03610140811215610d42578485fd5b8935610d4d81610f60565b985060208a0135610d5d81610f60565b975060408a013596506060808b01359650607f1982011215610d7d578485fd5b5060808901935060e0890135925061010089013591506101208901356001600160a01b0381168114610dad578182fd5b809150509295985092959890939650565b600060608284031215610dcf578081fd5b610dd96040610f39565b83601f840112610de7578182fd5b610df16040610f39565b80846040860187811115610e03578586fd5b855b6002811015610e24578235855260209485019490920191600101610e05565b5091845250356020830152509392505050565b600060208284031215610e48578081fd5b5051919050565b6001600160a01b0391909116815260200190565b901515815260200190565b6000602080835283518082850152825b81811015610e9a57858101830151858201604001528201610e7e565b81811115610eab5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b60405181810167ffffffffffffffff81118282101715610f5857600080fd5b604052919050565b6001600160a01b0381168114610f7557600080fd5b5056fea2646970667358221220e23bf1c6312d6760f787dad13d86a03e56feae18c7ed8e304d16c62f2366886064736f6c634300060c0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
