/**
Generated by the following Solidity interface...
```solidity
interface ApplicationFactory {
event ApplicationCreated(address indexed outputsMerkleRootValidator, address appOwner, bytes32 templateHash, bytes dataAvailability, address appContract);
function calculateApplicationAddress(address outputsMerkleRootValidator, address appOwner, bytes32 templateHash, bytes memory dataAvailability, bytes32 salt) external view returns (address);
function newApplication(address outputsMerkleRootValidator, address appOwner, bytes32 templateHash, bytes memory dataAvailability, bytes32 salt) external returns (address);
function newApplication(address outputsMerkleRootValidator, address appOwner, bytes32 templateHash, bytes memory dataAvailability) external returns (address);
}
```
...which was generated by the following JSON ABI:
```json
[
{
"type": "function",
"name": "calculateApplicationAddress",
"inputs": [
{
"name": "outputsMerkleRootValidator",
"type": "address",
"internalType": "contract IOutputsMerkleRootValidator"
},
{
"name": "appOwner",
"type": "address",
"internalType": "address"
},
{
"name": "templateHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "dataAvailability",
"type": "bytes",
"internalType": "bytes"
},
{
"name": "salt",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "address"
}
],
"stateMutability": "view"
},
{
"type": "function",
"name": "newApplication",
"inputs": [
{
"name": "outputsMerkleRootValidator",
"type": "address",
"internalType": "contract IOutputsMerkleRootValidator"
},
{
"name": "appOwner",
"type": "address",
"internalType": "address"
},
{
"name": "templateHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "dataAvailability",
"type": "bytes",
"internalType": "bytes"
},
{
"name": "salt",
"type": "bytes32",
"internalType": "bytes32"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IApplication"
}
],
"stateMutability": "nonpayable"
},
{
"type": "function",
"name": "newApplication",
"inputs": [
{
"name": "outputsMerkleRootValidator",
"type": "address",
"internalType": "contract IOutputsMerkleRootValidator"
},
{
"name": "appOwner",
"type": "address",
"internalType": "address"
},
{
"name": "templateHash",
"type": "bytes32",
"internalType": "bytes32"
},
{
"name": "dataAvailability",
"type": "bytes",
"internalType": "bytes"
}
],
"outputs": [
{
"name": "",
"type": "address",
"internalType": "contract IApplication"
}
],
"stateMutability": "nonpayable"
},
{
"type": "event",
"name": "ApplicationCreated",
"inputs": [
{
"name": "outputsMerkleRootValidator",
"type": "address",
"indexed": true,
"internalType": "contract IOutputsMerkleRootValidator"
},
{
"name": "appOwner",
"type": "address",
"indexed": false,
"internalType": "address"
},
{
"name": "templateHash",
"type": "bytes32",
"indexed": false,
"internalType": "bytes32"
},
{
"name": "dataAvailability",
"type": "bytes",
"indexed": false,
"internalType": "bytes"
},
{
"name": "appContract",
"type": "address",
"indexed": false,
"internalType": "contract IApplication"
}
],
"anonymous": false
}
]
```*/
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style,
clippy::empty_structs_with_brackets
)]
pub mod ApplicationFactory {
use super::*;
use alloy::sol_types as alloy_sol_types;
/// The creation / init bytecode of the contract.
///
/// ```text
///0x608080604052346015576115d3908161001a8239f35b5f80fdfe6080806040526004361015610012575f80fd5b5f3560e01c9081632cc3ef7c1461020b575080634269667b1461014957638d02370d1461003d575f80fd5b34610145576080366003190112610145576004356001600160a01b0381169081810361014557602435916001600160a01b0383168303610145576044359160643567ffffffffffffffff81116101455761009b9036906004016102a0565b939091604051906111bd8083019083821067ffffffffffffffff8311176101315785858a86956100d1958c956103e1893961034e565b03905ff09485156101265761011b7fd291ffe9436f2c57d5ce3e87ed33576f801053946651a2fb4fec5a406cf68cc59360209760018060a01b031696879160405195869586610382565b0390a2604051908152f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b34610145576020600b6101dc826101ab610162366102ce565b979491969295909361019d6111bd95604051996101818789018c6103be565b878b52868b01976103e18939604051998a94888601978861034e565b03601f1981018752866103be565b60405194859383850197518091895e840190838201905f8252519283915e01015f815203601f1981018352826103be565b51902090604051916040830152838201523081520160ff8153605590206040516001600160a01b039091168152f35b3461014557610219366102ce565b9094959291926111bd80820182811067ffffffffffffffff82111761013157878686898c61024d9588976103e1893961034e565b03905ff59485156101265761011b7fd291ffe9436f2c57d5ce3e87ed33576f801053946651a2fb4fec5a406cf68cc59360209760018060a01b031696879160405195869560018060a01b03169886610382565b9181601f840112156101455782359167ffffffffffffffff8311610145576020838186019501011161014557565b9060a0600319830112610145576004356001600160a01b038116810361014557916024356001600160a01b03811681036101455791604435916064359067ffffffffffffffff821161014557610326916004016102a0565b909160843590565b908060209392818452848401375f828201840152601f01601f1916010190565b6001600160a01b03918216815291166020820152604081019190915260806060820181905261037f9391019161032e565b90565b936103ae926060949297969760018060a01b03168652602086015260806040860152608085019161032e565b6001600160a01b03909416910152565b90601f8019910116810190811067ffffffffffffffff8211176101315760405256fe60c0604052346102b8576111bd80380380610019816102bc565b9283398101906080818303126102b85780516001600160a01b03811691908290036102b85760208101516001600160a01b038116908190036102b8576040820151606083015190926001600160401b0382116102b8570184601f820112156102b8578051906001600160401b0382116102915761009f601f8301601f19166020016102bc565b95828752602083830101116102b857815f9260208093018389015e8601015280156102a5575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3600180554360805260a052600380546001600160a01b03191691909117905580516001600160401b03811161029157600454600181811c91168015610287575b602082101461027357601f8111610210575b50602091601f82116001146101b0579181925f926101a5575b50508160011b915f199060031b1c1916176004555b604051610edb90816102e2823960805181610687015260a051816105670152f35b015190505f8061016f565b601f1982169260045f52805f20915f5b8581106101f8575083600195106101e0575b505050811b01600455610184565b01515f1960f88460031b161c191690555f80806101d2565b919260206001819286850151815501940192016101c0565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c81019160208410610269575b601f0160051c01905b81811061025e5750610156565b5f8155600101610251565b9091508190610248565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610144565b634e487b7160e01b5f52604160045260245ffd5b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b6040519190601f01601f191682016001600160401b038111838210176102915760405256fe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c806301ffc9a71461012957806308eb89ab14610124578063150b7a021461011f57806333137b761461011a57806361b12c6614610115578063715018a61461011057806371891db01461010b5780638da5cb5b14610106578063a94dfc5a14610101578063b3a1acd8146100fc578063bc197c81146100f7578063bf8abff8146100f2578063e64fab4d146100ed578063e88d39c0146100e8578063f02478de146100e3578063f23a6e61146100de5763f2fde38b0361000e576109c6565b61096d565b61087e565b61083d565b610820565b6107af565b610711565b610670565b610648565b610621565b6105e1565b61058a565b610550565b61034b565b610286565b610191565b3461017f57602036600319011261017f5760043563ffffffff60e01b811680910361017f57602090630271189760e51b811490811561016e575b506040519015158152f35b6301ffc9a760e01b1490505f610163565b5f80fd5b9081604091031261017f5790565b3461017f57604036600319011261017f576024356001600160401b03811161017f576101c4610018913690600401610183565b600435610a4f565b6001600160a01b0381160361017f57565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b0382111761021257604052565b6101dd565b6001600160401b03811161021257601f01601f191660200190565b92919261023e82610217565b9161024c60405193846101f1565b82948184528183011161017f578281602093845f960137010152565b9080601f8301121561017f5781602061028393359101610232565b90565b3461017f57608036600319011261017f576102a26004356101cc565b6102ad6024356101cc565b6064356001600160401b03811161017f576102cc903690600401610268565b50604051630a85bd0160e11b8152602090f35b604060031982011261017f57600435916001600160401b03831161017f578160238401121561017f578260040135926001600160401b03841161017f57826024858301011161017f576024019291602435906001600160401b03821161017f5761028391600401610183565b3461017f57610359366102df565b6002600193929354146105415761037f90600260015561037a818585610c0e565b610b26565b600483106105245761039a6103948484610b6b565b90610b96565b6103a5848085610b79565b916001600160e01b03191663237a816f60e01b810361049557506103e96001600160401b03841660ff6001918060081c5f526002602052161b60405f205416151590565b610471579361041c610465927fcad1f361c6e84664e892230291c8e8eb9555683e0a6a5ce8ea7b204ac0ac367696610d4d565b6104466001600160401b0384168060081c5f526002602052600160ff60405f2092161b8154179055565b610459610454600554610bcc565b600555565b60405193849384610bee565b0390a161001860018055565b5050604051637b97a6bb60e01b8152928392610491925060048401610b5a565b0390fd5b6310321e8b60e01b03610504576104cc6001600160401b03841660ff6001918060081c5f526002602052161b60405f205416151590565b61047157936104ff610465927fcad1f361c6e84664e892230291c8e8eb9555683e0a6a5ce8ea7b204ac0ac367696610ce8565b61041c565b5050604051636942600f60e11b8152928392610491925060048401610b5a565b50610491604051928392636942600f60e11b845260048401610b5a565b633ee5aeb560e01b5f5260045ffd5b3461017f575f36600319011261017f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461017f575f36600319011261017f576105a2610dbd565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461017f57602036600319011261017f57602061061760043560ff6001918060081c5f526002602052161b60405f205416151590565b6040519015158152f35b3461017f575f36600319011261017f575f546040516001600160a01b039091168152602090f35b3461017f575f36600319011261017f576003546040516001600160a01b039091168152602090f35b3461017f575f36600319011261017f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b9080601f8301121561017f578135916001600160401b038311610212578260051b90604051936106dd60208401866101f1565b845260208085019282010192831161017f57602001905b8282106107015750505090565b81358152602091820191016106f4565b3461017f5760a036600319011261017f5761072d6004356101cc565b6107386024356101cc565b6044356001600160401b03811161017f576107579036906004016106aa565b506064356001600160401b03811161017f576107779036906004016106aa565b506084356001600160401b03811161017f57610797903690600401610268565b5060405163bc197c8160e01b815280602081015b0390f35b3461017f57602036600319011261017f577f6ad3188ba8f430fba0656cb0a7e839ab2020d5586ba11a1477d18f7092f8bece6004356107ed816101cc565b6107f5610dbd565b600380546001600160a01b0319166001600160a01b03929092169182179055604051908152602090a1005b3461017f575f36600319011261017f576020600554604051908152f35b3461017f5761001861084e366102df565b91610c0e565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b3461017f575f36600319011261017f576040515f6004548060011c9060018116908115610963575b60208310821461094f57828552602085019190811561093657506001146108e4575b6107ab846108d8818603826101f1565b60405191829182610854565b60045f9081529250907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b818410610922575050016108d8826108c8565b80548484015260209093019260010161090f565b60ff191682525090151560051b0190506108d8826108c8565b634e487b7160e01b5f52602260045260245ffd5b91607f16916108a6565b3461017f5760a036600319011261017f576109896004356101cc565b6109946024356101cc565b6084356001600160401b03811161017f576109b3903690600401610268565b5060405163f23a6e6160e01b8152602090f35b3461017f57602036600319011261017f576004356109e3816101cc565b6109eb610dbd565b6001600160a01b03168015610a3c575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3005b631e4fbdf760e01b5f525f60045260245ffd5b916020820191603f610a618483610c2c565b905003610b17576001600160401b03610a80610a889483969496610c2c565b949092610b26565b16935f925b84841015610ade57610ac56001918560051b85013590838916155f14610ace5790610abe915f5260205260405f2090565b9660011c90565b93019294610a8d565b610abe915f5260205260405f2090565b9350939050610aee915015610de3565b610afe610afa82610c61565b1590565b610b055750565b6344a192ff60e01b5f5260045260245ffd5b635d2c5e9b60e11b5f5260045ffd5b356001600160401b038116810361017f5790565b908060209392818452848401375f828201840152601f01601f1916010190565b916020610283938181520191610b3a565b9060041161017f5790600490565b909291928360041161017f57831161017f57600401916003190190565b356001600160e01b0319811692919060048210610bb1575050565b6001600160e01b031960049290920360031b82901b16169150565b5f198114610bda5760010190565b634e487b7160e01b5f52601160045260245ffd5b6040906001600160401b0361028395931681528160208201520191610b3a565b610c1e90610c2a93923691610232565b60208151910120610a4f565b565b903590601e198136030182121561017f57018035906001600160401b03821161017f57602001918160051b3603831361017f57565b600354604051633973219960e21b81523060048201526024810192909252602090829060449082906001600160a01b03165afa908115610cdd575f91610ca5575090565b90506020813d602011610cd5575b81610cc0602093836101f1565b8101031261017f5751801515810361017f5790565b3d9150610cb3565b6040513d5f823e3d90fd5b9081019060408183031261017f578035610d01816101cc565b6020820135916001600160401b03831161017f575f938493610d239201610268565b8051916020909101906001600160a01b03165af4610d3f610e2e565b9015610d485750565b610e94565b90810160608282031261017f578135610d65816101cc565b6020830135926040810135906001600160401b03821161017f57610d9e938592610d8f9201610268565b916001600160a01b0316610e5d565b919015610da9575050565b62fae2d560e21b5f5260045260245260445ffd5b5f546001600160a01b03163303610dd057565b63118cdaa760e01b5f523360045260245ffd5b15610dea57565b606460405162461bcd60e51b815260206004820152602060248201527f4c69624d65726b6c6533323a20696e646578206f7574206f6620626f756e64736044820152fd5b3d15610e58573d90610e3f82610217565b91610e4d60405193846101f1565b82523d5f602084013e565b606090565b909291924793848211610e8c575f928392602083519301915af1610e7f610e2e565b9015610d48575060019190565b5050505f9190565b80519081610ea0575f80fd5b602001fdfea2646970667358221220792581cdb4c619bae279f0c92e047aad61eb4cf6dc6fa58277baeef42718d57d64736f6c634300081e0033a2646970667358221220dbeec0f601cd75193104bedbc40c7ae49694cd51be7106d801f08f000e5730ee64736f6c634300081e0033
/// ```
#[rustfmt::skip]
#[allow(clippy::all)]
pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
b"`\x80\x80`@R4`\x15Wa\x15\xD3\x90\x81a\0\x1A\x829\xF3[_\x80\xFD\xFE`\x80\x80`@R`\x046\x10\x15a\0\x12W_\x80\xFD[_5`\xE0\x1C\x90\x81c,\xC3\xEF|\x14a\x02\x0BWP\x80cBif{\x14a\x01IWc\x8D\x027\r\x14a\0=W_\x80\xFD[4a\x01EW`\x806`\x03\x19\x01\x12a\x01EW`\x045`\x01`\x01`\xA0\x1B\x03\x81\x16\x90\x81\x81\x03a\x01EW`$5\x91`\x01`\x01`\xA0\x1B\x03\x83\x16\x83\x03a\x01EW`D5\x91`d5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x01EWa\0\x9B\x906\x90`\x04\x01a\x02\xA0V[\x93\x90\x91`@Q\x90a\x11\xBD\x80\x83\x01\x90\x83\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\x011W\x85\x85\x8A\x86\x95a\0\xD1\x95\x8C\x95a\x03\xE1\x899a\x03NV[\x03\x90_\xF0\x94\x85\x15a\x01&Wa\x01\x1B\x7F\xD2\x91\xFF\xE9Co,W\xD5\xCE>\x87\xED3Wo\x80\x10S\x94fQ\xA2\xFBO\xECZ@l\xF6\x8C\xC5\x93` \x97`\x01\x80`\xA0\x1B\x03\x16\x96\x87\x91`@Q\x95\x86\x95\x86a\x03\x82V[\x03\x90\xA2`@Q\x90\x81R\xF3[`@Q=_\x82>=\x90\xFD[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[_\x80\xFD[4a\x01EW` `\x0Ba\x01\xDC\x82a\x01\xABa\x01b6a\x02\xCEV[\x97\x94\x91\x96\x92\x95\x90\x93a\x01\x9Da\x11\xBD\x95`@Q\x99a\x01\x81\x87\x89\x01\x8Ca\x03\xBEV[\x87\x8BR\x86\x8B\x01\x97a\x03\xE1\x899`@Q\x99\x8A\x94\x88\x86\x01\x97\x88a\x03NV[\x03`\x1F\x19\x81\x01\x87R\x86a\x03\xBEV[`@Q\x94\x85\x93\x83\x85\x01\x97Q\x80\x91\x89^\x84\x01\x90\x83\x82\x01\x90_\x82RQ\x92\x83\x91^\x01\x01_\x81R\x03`\x1F\x19\x81\x01\x83R\x82a\x03\xBEV[Q\x90 \x90`@Q\x91`@\x83\x01R\x83\x82\x01R0\x81R\x01`\xFF\x81S`U\x90 `@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\xF3[4a\x01EWa\x02\x196a\x02\xCEV[\x90\x94\x95\x92\x91\x92a\x11\xBD\x80\x82\x01\x82\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x011W\x87\x86\x86\x89\x8Ca\x02M\x95\x88\x97a\x03\xE1\x899a\x03NV[\x03\x90_\xF5\x94\x85\x15a\x01&Wa\x01\x1B\x7F\xD2\x91\xFF\xE9Co,W\xD5\xCE>\x87\xED3Wo\x80\x10S\x94fQ\xA2\xFBO\xECZ@l\xF6\x8C\xC5\x93` \x97`\x01\x80`\xA0\x1B\x03\x16\x96\x87\x91`@Q\x95\x86\x95`\x01\x80`\xA0\x1B\x03\x16\x98\x86a\x03\x82V[\x91\x81`\x1F\x84\x01\x12\x15a\x01EW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x01EW` \x83\x81\x86\x01\x95\x01\x01\x11a\x01EWV[\x90`\xA0`\x03\x19\x83\x01\x12a\x01EW`\x045`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x01EW\x91`$5`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x01EW\x91`D5\x91`d5\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01EWa\x03&\x91`\x04\x01a\x02\xA0V[\x90\x91`\x845\x90V[\x90\x80` \x93\x92\x81\x84R\x84\x84\x017_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x81R\x91\x16` \x82\x01R`@\x81\x01\x91\x90\x91R`\x80``\x82\x01\x81\x90Ra\x03\x7F\x93\x91\x01\x91a\x03.V[\x90V[\x93a\x03\xAE\x92``\x94\x92\x97\x96\x97`\x01\x80`\xA0\x1B\x03\x16\x86R` \x86\x01R`\x80`@\x86\x01R`\x80\x85\x01\x91a\x03.V[`\x01`\x01`\xA0\x1B\x03\x90\x94\x16\x91\x01RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x011W`@RV\xFE`\xC0`@R4a\x02\xB8Wa\x11\xBD\x808\x03\x80a\0\x19\x81a\x02\xBCV[\x92\x839\x81\x01\x90`\x80\x81\x83\x03\x12a\x02\xB8W\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x91\x90\x82\x90\x03a\x02\xB8W` \x81\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x90\x81\x90\x03a\x02\xB8W`@\x82\x01Q``\x83\x01Q\x90\x92`\x01`\x01`@\x1B\x03\x82\x11a\x02\xB8W\x01\x84`\x1F\x82\x01\x12\x15a\x02\xB8W\x80Q\x90`\x01`\x01`@\x1B\x03\x82\x11a\x02\x91Wa\0\x9F`\x1F\x83\x01`\x1F\x19\x16` \x01a\x02\xBCV[\x95\x82\x87R` \x83\x83\x01\x01\x11a\x02\xB8W\x81_\x92` \x80\x93\x01\x83\x89\x01^\x86\x01\x01R\x80\x15a\x02\xA5W_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16\x83\x17\x82U`\x01`\x01`\xA0\x1B\x03\x16\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x80\xA3`\x01\x80UC`\x80R`\xA0R`\x03\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x91\x90\x91\x17\x90U\x80Q`\x01`\x01`@\x1B\x03\x81\x11a\x02\x91W`\x04T`\x01\x81\x81\x1C\x91\x16\x80\x15a\x02\x87W[` \x82\x10\x14a\x02sW`\x1F\x81\x11a\x02\x10W[P` \x91`\x1F\x82\x11`\x01\x14a\x01\xB0W\x91\x81\x92_\x92a\x01\xA5W[PP\x81`\x01\x1B\x91_\x19\x90`\x03\x1B\x1C\x19\x16\x17`\x04U[`@Qa\x0E\xDB\x90\x81a\x02\xE2\x829`\x80Q\x81a\x06\x87\x01R`\xA0Q\x81a\x05g\x01R\xF3[\x01Q\x90P_\x80a\x01oV[`\x1F\x19\x82\x16\x92`\x04_R\x80_ \x91_[\x85\x81\x10a\x01\xF8WP\x83`\x01\x95\x10a\x01\xE0W[PPP\x81\x1B\x01`\x04Ua\x01\x84V[\x01Q_\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U_\x80\x80a\x01\xD2V[\x91\x92` `\x01\x81\x92\x86\x85\x01Q\x81U\x01\x94\x01\x92\x01a\x01\xC0V[`\x04_R\x7F\x8A5\xAC\xFB\xC1_\xF8\x1A9\xAE}4O\xD7\t\xF2\x8E\x86\0\xB4\xAA\x8Ce\xC6\xB6K\xFE\x7F\xE3k\xD1\x9B`\x1F\x83\x01`\x05\x1C\x81\x01\x91` \x84\x10a\x02iW[`\x1F\x01`\x05\x1C\x01\x90[\x81\x81\x10a\x02^WPa\x01VV[_\x81U`\x01\x01a\x02QV[\x90\x91P\x81\x90a\x02HV[cNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[\x90`\x7F\x16\x90a\x01DV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[c\x1EO\xBD\xF7`\xE0\x1B_R_`\x04R`$_\xFD[_\x80\xFD[`@Q\x91\x90`\x1F\x01`\x1F\x19\x16\x82\x01`\x01`\x01`@\x1B\x03\x81\x11\x83\x82\x10\x17a\x02\x91W`@RV\xFE`\x80`@R`\x046\x10\x15a\0\x1AW[6\x15a\0\x18W_\x80\xFD[\0[_5`\xE0\x1C\x80c\x01\xFF\xC9\xA7\x14a\x01)W\x80c\x08\xEB\x89\xAB\x14a\x01$W\x80c\x15\x0Bz\x02\x14a\x01\x1FW\x80c3\x13{v\x14a\x01\x1AW\x80ca\xB1,f\x14a\x01\x15W\x80cqP\x18\xA6\x14a\x01\x10W\x80cq\x89\x1D\xB0\x14a\x01\x0BW\x80c\x8D\xA5\xCB[\x14a\x01\x06W\x80c\xA9M\xFCZ\x14a\x01\x01W\x80c\xB3\xA1\xAC\xD8\x14a\0\xFCW\x80c\xBC\x19|\x81\x14a\0\xF7W\x80c\xBF\x8A\xBF\xF8\x14a\0\xF2W\x80c\xE6O\xABM\x14a\0\xEDW\x80c\xE8\x8D9\xC0\x14a\0\xE8W\x80c\xF0$x\xDE\x14a\0\xE3W\x80c\xF2:na\x14a\0\xDEWc\xF2\xFD\xE3\x8B\x03a\0\x0EWa\t\xC6V[a\tmV[a\x08~V[a\x08=V[a\x08 V[a\x07\xAFV[a\x07\x11V[a\x06pV[a\x06HV[a\x06!V[a\x05\xE1V[a\x05\x8AV[a\x05PV[a\x03KV[a\x02\x86V[a\x01\x91V[4a\x01\x7FW` 6`\x03\x19\x01\x12a\x01\x7FW`\x045c\xFF\xFF\xFF\xFF`\xE0\x1B\x81\x16\x80\x91\x03a\x01\x7FW` \x90c\x02q\x18\x97`\xE5\x1B\x81\x14\x90\x81\x15a\x01nW[P`@Q\x90\x15\x15\x81R\xF3[c\x01\xFF\xC9\xA7`\xE0\x1B\x14\x90P_a\x01cV[_\x80\xFD[\x90\x81`@\x91\x03\x12a\x01\x7FW\x90V[4a\x01\x7FW`@6`\x03\x19\x01\x12a\x01\x7FW`$5`\x01`\x01`@\x1B\x03\x81\x11a\x01\x7FWa\x01\xC4a\0\x18\x916\x90`\x04\x01a\x01\x83V[`\x045a\nOV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x01\x7FWV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x02\x12W`@RV[a\x01\xDDV[`\x01`\x01`@\x1B\x03\x81\x11a\x02\x12W`\x1F\x01`\x1F\x19\x16` \x01\x90V[\x92\x91\x92a\x02>\x82a\x02\x17V[\x91a\x02L`@Q\x93\x84a\x01\xF1V[\x82\x94\x81\x84R\x81\x83\x01\x11a\x01\x7FW\x82\x81` \x93\x84_\x96\x017\x01\x01RV[\x90\x80`\x1F\x83\x01\x12\x15a\x01\x7FW\x81` a\x02\x83\x935\x91\x01a\x022V[\x90V[4a\x01\x7FW`\x806`\x03\x19\x01\x12a\x01\x7FWa\x02\xA2`\x045a\x01\xCCV[a\x02\xAD`$5a\x01\xCCV[`d5`\x01`\x01`@\x1B\x03\x81\x11a\x01\x7FWa\x02\xCC\x906\x90`\x04\x01a\x02hV[P`@Qc\n\x85\xBD\x01`\xE1\x1B\x81R` \x90\xF3[`@`\x03\x19\x82\x01\x12a\x01\x7FW`\x045\x91`\x01`\x01`@\x1B\x03\x83\x11a\x01\x7FW\x81`#\x84\x01\x12\x15a\x01\x7FW\x82`\x04\x015\x92`\x01`\x01`@\x1B\x03\x84\x11a\x01\x7FW\x82`$\x85\x83\x01\x01\x11a\x01\x7FW`$\x01\x92\x91`$5\x90`\x01`\x01`@\x1B\x03\x82\x11a\x01\x7FWa\x02\x83\x91`\x04\x01a\x01\x83V[4a\x01\x7FWa\x03Y6a\x02\xDFV[`\x02`\x01\x93\x92\x93T\x14a\x05AWa\x03\x7F\x90`\x02`\x01Ua\x03z\x81\x85\x85a\x0C\x0EV[a\x0B&V[`\x04\x83\x10a\x05$Wa\x03\x9Aa\x03\x94\x84\x84a\x0BkV[\x90a\x0B\x96V[a\x03\xA5\x84\x80\x85a\x0ByV[\x91`\x01`\x01`\xE0\x1B\x03\x19\x16c#z\x81o`\xE0\x1B\x81\x03a\x04\x95WPa\x03\xE9`\x01`\x01`@\x1B\x03\x84\x16`\xFF`\x01\x91\x80`\x08\x1C_R`\x02` R\x16\x1B`@_ T\x16\x15\x15\x90V[a\x04qW\x93a\x04\x1Ca\x04e\x92\x7F\xCA\xD1\xF3a\xC6\xE8Fd\xE8\x92#\x02\x91\xC8\xE8\xEB\x95Uh>\nj\\\xE8\xEA{ J\xC0\xAC6v\x96a\rMV[a\x04F`\x01`\x01`@\x1B\x03\x84\x16\x80`\x08\x1C_R`\x02` R`\x01`\xFF`@_ \x92\x16\x1B\x81T\x17\x90UV[a\x04Ya\x04T`\x05Ta\x0B\xCCV[`\x05UV[`@Q\x93\x84\x93\x84a\x0B\xEEV[\x03\x90\xA1a\0\x18`\x01\x80UV[PP`@Qc{\x97\xA6\xBB`\xE0\x1B\x81R\x92\x83\x92a\x04\x91\x92P`\x04\x84\x01a\x0BZV[\x03\x90\xFD[c\x102\x1E\x8B`\xE0\x1B\x03a\x05\x04Wa\x04\xCC`\x01`\x01`@\x1B\x03\x84\x16`\xFF`\x01\x91\x80`\x08\x1C_R`\x02` R\x16\x1B`@_ T\x16\x15\x15\x90V[a\x04qW\x93a\x04\xFFa\x04e\x92\x7F\xCA\xD1\xF3a\xC6\xE8Fd\xE8\x92#\x02\x91\xC8\xE8\xEB\x95Uh>\nj\\\xE8\xEA{ J\xC0\xAC6v\x96a\x0C\xE8V[a\x04\x1CV[PP`@QciB`\x0F`\xE1\x1B\x81R\x92\x83\x92a\x04\x91\x92P`\x04\x84\x01a\x0BZV[Pa\x04\x91`@Q\x92\x83\x92ciB`\x0F`\xE1\x1B\x84R`\x04\x84\x01a\x0BZV[c>\xE5\xAE\xB5`\xE0\x1B_R`\x04_\xFD[4a\x01\x7FW_6`\x03\x19\x01\x12a\x01\x7FW` `@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xF3[4a\x01\x7FW_6`\x03\x19\x01\x12a\x01\x7FWa\x05\xA2a\r\xBDV[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16\x82U`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x82\x80\xA3\0[4a\x01\x7FW` 6`\x03\x19\x01\x12a\x01\x7FW` a\x06\x17`\x045`\xFF`\x01\x91\x80`\x08\x1C_R`\x02` R\x16\x1B`@_ T\x16\x15\x15\x90V[`@Q\x90\x15\x15\x81R\xF3[4a\x01\x7FW_6`\x03\x19\x01\x12a\x01\x7FW_T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01\x7FW_6`\x03\x19\x01\x12a\x01\x7FW`\x03T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01\x7FW_6`\x03\x19\x01\x12a\x01\x7FW` `@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xF3[\x90\x80`\x1F\x83\x01\x12\x15a\x01\x7FW\x815\x91`\x01`\x01`@\x1B\x03\x83\x11a\x02\x12W\x82`\x05\x1B\x90`@Q\x93a\x06\xDD` \x84\x01\x86a\x01\xF1V[\x84R` \x80\x85\x01\x92\x82\x01\x01\x92\x83\x11a\x01\x7FW` \x01\x90[\x82\x82\x10a\x07\x01WPPP\x90V[\x815\x81R` \x91\x82\x01\x91\x01a\x06\xF4V[4a\x01\x7FW`\xA06`\x03\x19\x01\x12a\x01\x7FWa\x07-`\x045a\x01\xCCV[a\x078`$5a\x01\xCCV[`D5`\x01`\x01`@\x1B\x03\x81\x11a\x01\x7FWa\x07W\x906\x90`\x04\x01a\x06\xAAV[P`d5`\x01`\x01`@\x1B\x03\x81\x11a\x01\x7FWa\x07w\x906\x90`\x04\x01a\x06\xAAV[P`\x845`\x01`\x01`@\x1B\x03\x81\x11a\x01\x7FWa\x07\x97\x906\x90`\x04\x01a\x02hV[P`@Qc\xBC\x19|\x81`\xE0\x1B\x81R\x80` \x81\x01[\x03\x90\xF3[4a\x01\x7FW` 6`\x03\x19\x01\x12a\x01\x7FW\x7Fj\xD3\x18\x8B\xA8\xF40\xFB\xA0el\xB0\xA7\xE89\xAB \xD5Xk\xA1\x1A\x14w\xD1\x8Fp\x92\xF8\xBE\xCE`\x045a\x07\xED\x81a\x01\xCCV[a\x07\xF5a\r\xBDV[`\x03\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Q\x90\x81R` \x90\xA1\0[4a\x01\x7FW_6`\x03\x19\x01\x12a\x01\x7FW` `\x05T`@Q\x90\x81R\xF3[4a\x01\x7FWa\0\x18a\x08N6a\x02\xDFV[\x91a\x0C\x0EV[` `@\x92\x81\x83R\x80Q\x91\x82\x91\x82\x82\x86\x01R\x01\x84\x84\x01^_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[4a\x01\x7FW_6`\x03\x19\x01\x12a\x01\x7FW`@Q_`\x04T\x80`\x01\x1C\x90`\x01\x81\x16\x90\x81\x15a\tcW[` \x83\x10\x82\x14a\tOW\x82\x85R` \x85\x01\x91\x90\x81\x15a\t6WP`\x01\x14a\x08\xE4W[a\x07\xAB\x84a\x08\xD8\x81\x86\x03\x82a\x01\xF1V[`@Q\x91\x82\x91\x82a\x08TV[`\x04_\x90\x81R\x92P\x90\x7F\x8A5\xAC\xFB\xC1_\xF8\x1A9\xAE}4O\xD7\t\xF2\x8E\x86\0\xB4\xAA\x8Ce\xC6\xB6K\xFE\x7F\xE3k\xD1\x9B[\x81\x84\x10a\t\"WPP\x01a\x08\xD8\x82a\x08\xC8V[\x80T\x84\x84\x01R` \x90\x93\x01\x92`\x01\x01a\t\x0FV[`\xFF\x19\x16\x82RP\x90\x15\x15`\x05\x1B\x01\x90Pa\x08\xD8\x82a\x08\xC8V[cNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[\x91`\x7F\x16\x91a\x08\xA6V[4a\x01\x7FW`\xA06`\x03\x19\x01\x12a\x01\x7FWa\t\x89`\x045a\x01\xCCV[a\t\x94`$5a\x01\xCCV[`\x845`\x01`\x01`@\x1B\x03\x81\x11a\x01\x7FWa\t\xB3\x906\x90`\x04\x01a\x02hV[P`@Qc\xF2:na`\xE0\x1B\x81R` \x90\xF3[4a\x01\x7FW` 6`\x03\x19\x01\x12a\x01\x7FW`\x045a\t\xE3\x81a\x01\xCCV[a\t\xEBa\r\xBDV[`\x01`\x01`\xA0\x1B\x03\x16\x80\x15a\n<W_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16\x83\x17\x82U`\x01`\x01`\xA0\x1B\x03\x16\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x80\xA3\0[c\x1EO\xBD\xF7`\xE0\x1B_R_`\x04R`$_\xFD[\x91` \x82\x01\x91`?a\na\x84\x83a\x0C,V[\x90P\x03a\x0B\x17W`\x01`\x01`@\x1B\x03a\n\x80a\n\x88\x94\x83\x96\x94\x96a\x0C,V[\x94\x90\x92a\x0B&V[\x16\x93_\x92[\x84\x84\x10\x15a\n\xDEWa\n\xC5`\x01\x91\x85`\x05\x1B\x85\x015\x90\x83\x89\x16\x15_\x14a\n\xCEW\x90a\n\xBE\x91_R` R`@_ \x90V[\x96`\x01\x1C\x90V[\x93\x01\x92\x94a\n\x8DV[a\n\xBE\x91_R` R`@_ \x90V[\x93P\x93\x90Pa\n\xEE\x91P\x15a\r\xE3V[a\n\xFEa\n\xFA\x82a\x0CaV[\x15\x90V[a\x0B\x05WPV[cD\xA1\x92\xFF`\xE0\x1B_R`\x04R`$_\xFD[c],^\x9B`\xE1\x1B_R`\x04_\xFD[5`\x01`\x01`@\x1B\x03\x81\x16\x81\x03a\x01\x7FW\x90V[\x90\x80` \x93\x92\x81\x84R\x84\x84\x017_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x91` a\x02\x83\x93\x81\x81R\x01\x91a\x0B:V[\x90`\x04\x11a\x01\x7FW\x90`\x04\x90V[\x90\x92\x91\x92\x83`\x04\x11a\x01\x7FW\x83\x11a\x01\x7FW`\x04\x01\x91`\x03\x19\x01\x90V[5`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x92\x91\x90`\x04\x82\x10a\x0B\xB1WPPV[`\x01`\x01`\xE0\x1B\x03\x19`\x04\x92\x90\x92\x03`\x03\x1B\x82\x90\x1B\x16\x16\x91PV[_\x19\x81\x14a\x0B\xDAW`\x01\x01\x90V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`@\x90`\x01`\x01`@\x1B\x03a\x02\x83\x95\x93\x16\x81R\x81` \x82\x01R\x01\x91a\x0B:V[a\x0C\x1E\x90a\x0C*\x93\x926\x91a\x022V[` \x81Q\x91\x01 a\nOV[V[\x905\x90`\x1E\x19\x816\x03\x01\x82\x12\x15a\x01\x7FW\x01\x805\x90`\x01`\x01`@\x1B\x03\x82\x11a\x01\x7FW` \x01\x91\x81`\x05\x1B6\x03\x83\x13a\x01\x7FWV[`\x03T`@Qc9s!\x99`\xE2\x1B\x81R0`\x04\x82\x01R`$\x81\x01\x92\x90\x92R` \x90\x82\x90`D\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x0C\xDDW_\x91a\x0C\xA5WP\x90V[\x90P` \x81=` \x11a\x0C\xD5W[\x81a\x0C\xC0` \x93\x83a\x01\xF1V[\x81\x01\x03\x12a\x01\x7FWQ\x80\x15\x15\x81\x03a\x01\x7FW\x90V[=\x91Pa\x0C\xB3V[`@Q=_\x82>=\x90\xFD[\x90\x81\x01\x90`@\x81\x83\x03\x12a\x01\x7FW\x805a\r\x01\x81a\x01\xCCV[` \x82\x015\x91`\x01`\x01`@\x1B\x03\x83\x11a\x01\x7FW_\x93\x84\x93a\r#\x92\x01a\x02hV[\x80Q\x91` \x90\x91\x01\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xF4a\r?a\x0E.V[\x90\x15a\rHWPV[a\x0E\x94V[\x90\x81\x01``\x82\x82\x03\x12a\x01\x7FW\x815a\re\x81a\x01\xCCV[` \x83\x015\x92`@\x81\x015\x90`\x01`\x01`@\x1B\x03\x82\x11a\x01\x7FWa\r\x9E\x93\x85\x92a\r\x8F\x92\x01a\x02hV[\x91`\x01`\x01`\xA0\x1B\x03\x16a\x0E]V[\x91\x90\x15a\r\xA9WPPV[b\xFA\xE2\xD5`\xE2\x1B_R`\x04R`$R`D_\xFD[_T`\x01`\x01`\xA0\x1B\x03\x163\x03a\r\xD0WV[c\x11\x8C\xDA\xA7`\xE0\x1B_R3`\x04R`$_\xFD[\x15a\r\xEAWV[`d`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R` `$\x82\x01R\x7FLibMerkle32: index out of bounds`D\x82\x01R\xFD[=\x15a\x0EXW=\x90a\x0E?\x82a\x02\x17V[\x91a\x0EM`@Q\x93\x84a\x01\xF1V[\x82R=_` \x84\x01>V[``\x90V[\x90\x92\x91\x92G\x93\x84\x82\x11a\x0E\x8CW_\x92\x83\x92` \x83Q\x93\x01\x91Z\xF1a\x0E\x7Fa\x0E.V[\x90\x15a\rHWP`\x01\x91\x90V[PPP_\x91\x90V[\x80Q\x90\x81a\x0E\xA0W_\x80\xFD[` \x01\xFD\xFE\xA2dipfsX\"\x12 y%\x81\xCD\xB4\xC6\x19\xBA\xE2y\xF0\xC9.\x04z\xADa\xEBL\xF6\xDCo\xA5\x82w\xBA\xEE\xF4'\x18\xD5}dsolcC\0\x08\x1E\x003\xA2dipfsX\"\x12 \xDB\xEE\xC0\xF6\x01\xCDu\x191\x04\xBE\xDB\xC4\x0Cz\xE4\x96\x94\xCDQ\xBEq\x06\xD8\x01\xF0\x8F\0\x0EW0\xEEdsolcC\0\x08\x1E\x003",
);
/// The runtime bytecode of the contract, as deployed on the network.
///
/// ```text
///0x6080806040526004361015610012575f80fd5b5f3560e01c9081632cc3ef7c1461020b575080634269667b1461014957638d02370d1461003d575f80fd5b34610145576080366003190112610145576004356001600160a01b0381169081810361014557602435916001600160a01b0383168303610145576044359160643567ffffffffffffffff81116101455761009b9036906004016102a0565b939091604051906111bd8083019083821067ffffffffffffffff8311176101315785858a86956100d1958c956103e1893961034e565b03905ff09485156101265761011b7fd291ffe9436f2c57d5ce3e87ed33576f801053946651a2fb4fec5a406cf68cc59360209760018060a01b031696879160405195869586610382565b0390a2604051908152f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b34610145576020600b6101dc826101ab610162366102ce565b979491969295909361019d6111bd95604051996101818789018c6103be565b878b52868b01976103e18939604051998a94888601978861034e565b03601f1981018752866103be565b60405194859383850197518091895e840190838201905f8252519283915e01015f815203601f1981018352826103be565b51902090604051916040830152838201523081520160ff8153605590206040516001600160a01b039091168152f35b3461014557610219366102ce565b9094959291926111bd80820182811067ffffffffffffffff82111761013157878686898c61024d9588976103e1893961034e565b03905ff59485156101265761011b7fd291ffe9436f2c57d5ce3e87ed33576f801053946651a2fb4fec5a406cf68cc59360209760018060a01b031696879160405195869560018060a01b03169886610382565b9181601f840112156101455782359167ffffffffffffffff8311610145576020838186019501011161014557565b9060a0600319830112610145576004356001600160a01b038116810361014557916024356001600160a01b03811681036101455791604435916064359067ffffffffffffffff821161014557610326916004016102a0565b909160843590565b908060209392818452848401375f828201840152601f01601f1916010190565b6001600160a01b03918216815291166020820152604081019190915260806060820181905261037f9391019161032e565b90565b936103ae926060949297969760018060a01b03168652602086015260806040860152608085019161032e565b6001600160a01b03909416910152565b90601f8019910116810190811067ffffffffffffffff8211176101315760405256fe60c0604052346102b8576111bd80380380610019816102bc565b9283398101906080818303126102b85780516001600160a01b03811691908290036102b85760208101516001600160a01b038116908190036102b8576040820151606083015190926001600160401b0382116102b8570184601f820112156102b8578051906001600160401b0382116102915761009f601f8301601f19166020016102bc565b95828752602083830101116102b857815f9260208093018389015e8601015280156102a5575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3600180554360805260a052600380546001600160a01b03191691909117905580516001600160401b03811161029157600454600181811c91168015610287575b602082101461027357601f8111610210575b50602091601f82116001146101b0579181925f926101a5575b50508160011b915f199060031b1c1916176004555b604051610edb90816102e2823960805181610687015260a051816105670152f35b015190505f8061016f565b601f1982169260045f52805f20915f5b8581106101f8575083600195106101e0575b505050811b01600455610184565b01515f1960f88460031b161c191690555f80806101d2565b919260206001819286850151815501940192016101c0565b60045f527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f830160051c81019160208410610269575b601f0160051c01905b81811061025e5750610156565b5f8155600101610251565b9091508190610248565b634e487b7160e01b5f52602260045260245ffd5b90607f1690610144565b634e487b7160e01b5f52604160045260245ffd5b631e4fbdf760e01b5f525f60045260245ffd5b5f80fd5b6040519190601f01601f191682016001600160401b038111838210176102915760405256fe6080604052600436101561001a575b3615610018575f80fd5b005b5f3560e01c806301ffc9a71461012957806308eb89ab14610124578063150b7a021461011f57806333137b761461011a57806361b12c6614610115578063715018a61461011057806371891db01461010b5780638da5cb5b14610106578063a94dfc5a14610101578063b3a1acd8146100fc578063bc197c81146100f7578063bf8abff8146100f2578063e64fab4d146100ed578063e88d39c0146100e8578063f02478de146100e3578063f23a6e61146100de5763f2fde38b0361000e576109c6565b61096d565b61087e565b61083d565b610820565b6107af565b610711565b610670565b610648565b610621565b6105e1565b61058a565b610550565b61034b565b610286565b610191565b3461017f57602036600319011261017f5760043563ffffffff60e01b811680910361017f57602090630271189760e51b811490811561016e575b506040519015158152f35b6301ffc9a760e01b1490505f610163565b5f80fd5b9081604091031261017f5790565b3461017f57604036600319011261017f576024356001600160401b03811161017f576101c4610018913690600401610183565b600435610a4f565b6001600160a01b0381160361017f57565b634e487b7160e01b5f52604160045260245ffd5b90601f801991011681019081106001600160401b0382111761021257604052565b6101dd565b6001600160401b03811161021257601f01601f191660200190565b92919261023e82610217565b9161024c60405193846101f1565b82948184528183011161017f578281602093845f960137010152565b9080601f8301121561017f5781602061028393359101610232565b90565b3461017f57608036600319011261017f576102a26004356101cc565b6102ad6024356101cc565b6064356001600160401b03811161017f576102cc903690600401610268565b50604051630a85bd0160e11b8152602090f35b604060031982011261017f57600435916001600160401b03831161017f578160238401121561017f578260040135926001600160401b03841161017f57826024858301011161017f576024019291602435906001600160401b03821161017f5761028391600401610183565b3461017f57610359366102df565b6002600193929354146105415761037f90600260015561037a818585610c0e565b610b26565b600483106105245761039a6103948484610b6b565b90610b96565b6103a5848085610b79565b916001600160e01b03191663237a816f60e01b810361049557506103e96001600160401b03841660ff6001918060081c5f526002602052161b60405f205416151590565b610471579361041c610465927fcad1f361c6e84664e892230291c8e8eb9555683e0a6a5ce8ea7b204ac0ac367696610d4d565b6104466001600160401b0384168060081c5f526002602052600160ff60405f2092161b8154179055565b610459610454600554610bcc565b600555565b60405193849384610bee565b0390a161001860018055565b5050604051637b97a6bb60e01b8152928392610491925060048401610b5a565b0390fd5b6310321e8b60e01b03610504576104cc6001600160401b03841660ff6001918060081c5f526002602052161b60405f205416151590565b61047157936104ff610465927fcad1f361c6e84664e892230291c8e8eb9555683e0a6a5ce8ea7b204ac0ac367696610ce8565b61041c565b5050604051636942600f60e11b8152928392610491925060048401610b5a565b50610491604051928392636942600f60e11b845260048401610b5a565b633ee5aeb560e01b5f5260045ffd5b3461017f575f36600319011261017f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461017f575f36600319011261017f576105a2610dbd565b5f80546001600160a01b0319811682556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a3005b3461017f57602036600319011261017f57602061061760043560ff6001918060081c5f526002602052161b60405f205416151590565b6040519015158152f35b3461017f575f36600319011261017f575f546040516001600160a01b039091168152602090f35b3461017f575f36600319011261017f576003546040516001600160a01b039091168152602090f35b3461017f575f36600319011261017f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b9080601f8301121561017f578135916001600160401b038311610212578260051b90604051936106dd60208401866101f1565b845260208085019282010192831161017f57602001905b8282106107015750505090565b81358152602091820191016106f4565b3461017f5760a036600319011261017f5761072d6004356101cc565b6107386024356101cc565b6044356001600160401b03811161017f576107579036906004016106aa565b506064356001600160401b03811161017f576107779036906004016106aa565b506084356001600160401b03811161017f57610797903690600401610268565b5060405163bc197c8160e01b815280602081015b0390f35b3461017f57602036600319011261017f577f6ad3188ba8f430fba0656cb0a7e839ab2020d5586ba11a1477d18f7092f8bece6004356107ed816101cc565b6107f5610dbd565b600380546001600160a01b0319166001600160a01b03929092169182179055604051908152602090a1005b3461017f575f36600319011261017f576020600554604051908152f35b3461017f5761001861084e366102df565b91610c0e565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b3461017f575f36600319011261017f576040515f6004548060011c9060018116908115610963575b60208310821461094f57828552602085019190811561093657506001146108e4575b6107ab846108d8818603826101f1565b60405191829182610854565b60045f9081529250907f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b5b818410610922575050016108d8826108c8565b80548484015260209093019260010161090f565b60ff191682525090151560051b0190506108d8826108c8565b634e487b7160e01b5f52602260045260245ffd5b91607f16916108a6565b3461017f5760a036600319011261017f576109896004356101cc565b6109946024356101cc565b6084356001600160401b03811161017f576109b3903690600401610268565b5060405163f23a6e6160e01b8152602090f35b3461017f57602036600319011261017f576004356109e3816101cc565b6109eb610dbd565b6001600160a01b03168015610a3c575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a3005b631e4fbdf760e01b5f525f60045260245ffd5b916020820191603f610a618483610c2c565b905003610b17576001600160401b03610a80610a889483969496610c2c565b949092610b26565b16935f925b84841015610ade57610ac56001918560051b85013590838916155f14610ace5790610abe915f5260205260405f2090565b9660011c90565b93019294610a8d565b610abe915f5260205260405f2090565b9350939050610aee915015610de3565b610afe610afa82610c61565b1590565b610b055750565b6344a192ff60e01b5f5260045260245ffd5b635d2c5e9b60e11b5f5260045ffd5b356001600160401b038116810361017f5790565b908060209392818452848401375f828201840152601f01601f1916010190565b916020610283938181520191610b3a565b9060041161017f5790600490565b909291928360041161017f57831161017f57600401916003190190565b356001600160e01b0319811692919060048210610bb1575050565b6001600160e01b031960049290920360031b82901b16169150565b5f198114610bda5760010190565b634e487b7160e01b5f52601160045260245ffd5b6040906001600160401b0361028395931681528160208201520191610b3a565b610c1e90610c2a93923691610232565b60208151910120610a4f565b565b903590601e198136030182121561017f57018035906001600160401b03821161017f57602001918160051b3603831361017f57565b600354604051633973219960e21b81523060048201526024810192909252602090829060449082906001600160a01b03165afa908115610cdd575f91610ca5575090565b90506020813d602011610cd5575b81610cc0602093836101f1565b8101031261017f5751801515810361017f5790565b3d9150610cb3565b6040513d5f823e3d90fd5b9081019060408183031261017f578035610d01816101cc565b6020820135916001600160401b03831161017f575f938493610d239201610268565b8051916020909101906001600160a01b03165af4610d3f610e2e565b9015610d485750565b610e94565b90810160608282031261017f578135610d65816101cc565b6020830135926040810135906001600160401b03821161017f57610d9e938592610d8f9201610268565b916001600160a01b0316610e5d565b919015610da9575050565b62fae2d560e21b5f5260045260245260445ffd5b5f546001600160a01b03163303610dd057565b63118cdaa760e01b5f523360045260245ffd5b15610dea57565b606460405162461bcd60e51b815260206004820152602060248201527f4c69624d65726b6c6533323a20696e646578206f7574206f6620626f756e64736044820152fd5b3d15610e58573d90610e3f82610217565b91610e4d60405193846101f1565b82523d5f602084013e565b606090565b909291924793848211610e8c575f928392602083519301915af1610e7f610e2e565b9015610d48575060019190565b5050505f9190565b80519081610ea0575f80fd5b602001fdfea2646970667358221220792581cdb4c619bae279f0c92e047aad61eb4cf6dc6fa58277baeef42718d57d64736f6c634300081e0033a2646970667358221220dbeec0f601cd75193104bedbc40c7ae49694cd51be7106d801f08f000e5730ee64736f6c634300081e0033
/// ```
#[rustfmt::skip]
#[allow(clippy::all)]
pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
b"`\x80\x80`@R`\x046\x10\x15a\0\x12W_\x80\xFD[_5`\xE0\x1C\x90\x81c,\xC3\xEF|\x14a\x02\x0BWP\x80cBif{\x14a\x01IWc\x8D\x027\r\x14a\0=W_\x80\xFD[4a\x01EW`\x806`\x03\x19\x01\x12a\x01EW`\x045`\x01`\x01`\xA0\x1B\x03\x81\x16\x90\x81\x81\x03a\x01EW`$5\x91`\x01`\x01`\xA0\x1B\x03\x83\x16\x83\x03a\x01EW`D5\x91`d5g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x81\x11a\x01EWa\0\x9B\x906\x90`\x04\x01a\x02\xA0V[\x93\x90\x91`@Q\x90a\x11\xBD\x80\x83\x01\x90\x83\x82\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11\x17a\x011W\x85\x85\x8A\x86\x95a\0\xD1\x95\x8C\x95a\x03\xE1\x899a\x03NV[\x03\x90_\xF0\x94\x85\x15a\x01&Wa\x01\x1B\x7F\xD2\x91\xFF\xE9Co,W\xD5\xCE>\x87\xED3Wo\x80\x10S\x94fQ\xA2\xFBO\xECZ@l\xF6\x8C\xC5\x93` \x97`\x01\x80`\xA0\x1B\x03\x16\x96\x87\x91`@Q\x95\x86\x95\x86a\x03\x82V[\x03\x90\xA2`@Q\x90\x81R\xF3[`@Q=_\x82>=\x90\xFD[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[_\x80\xFD[4a\x01EW` `\x0Ba\x01\xDC\x82a\x01\xABa\x01b6a\x02\xCEV[\x97\x94\x91\x96\x92\x95\x90\x93a\x01\x9Da\x11\xBD\x95`@Q\x99a\x01\x81\x87\x89\x01\x8Ca\x03\xBEV[\x87\x8BR\x86\x8B\x01\x97a\x03\xE1\x899`@Q\x99\x8A\x94\x88\x86\x01\x97\x88a\x03NV[\x03`\x1F\x19\x81\x01\x87R\x86a\x03\xBEV[`@Q\x94\x85\x93\x83\x85\x01\x97Q\x80\x91\x89^\x84\x01\x90\x83\x82\x01\x90_\x82RQ\x92\x83\x91^\x01\x01_\x81R\x03`\x1F\x19\x81\x01\x83R\x82a\x03\xBEV[Q\x90 \x90`@Q\x91`@\x83\x01R\x83\x82\x01R0\x81R\x01`\xFF\x81S`U\x90 `@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R\xF3[4a\x01EWa\x02\x196a\x02\xCEV[\x90\x94\x95\x92\x91\x92a\x11\xBD\x80\x82\x01\x82\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x011W\x87\x86\x86\x89\x8Ca\x02M\x95\x88\x97a\x03\xE1\x899a\x03NV[\x03\x90_\xF5\x94\x85\x15a\x01&Wa\x01\x1B\x7F\xD2\x91\xFF\xE9Co,W\xD5\xCE>\x87\xED3Wo\x80\x10S\x94fQ\xA2\xFBO\xECZ@l\xF6\x8C\xC5\x93` \x97`\x01\x80`\xA0\x1B\x03\x16\x96\x87\x91`@Q\x95\x86\x95`\x01\x80`\xA0\x1B\x03\x16\x98\x86a\x03\x82V[\x91\x81`\x1F\x84\x01\x12\x15a\x01EW\x825\x91g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x83\x11a\x01EW` \x83\x81\x86\x01\x95\x01\x01\x11a\x01EWV[\x90`\xA0`\x03\x19\x83\x01\x12a\x01EW`\x045`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x01EW\x91`$5`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x03a\x01EW\x91`D5\x91`d5\x90g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11a\x01EWa\x03&\x91`\x04\x01a\x02\xA0V[\x90\x91`\x845\x90V[\x90\x80` \x93\x92\x81\x84R\x84\x84\x017_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[`\x01`\x01`\xA0\x1B\x03\x91\x82\x16\x81R\x91\x16` \x82\x01R`@\x81\x01\x91\x90\x91R`\x80``\x82\x01\x81\x90Ra\x03\x7F\x93\x91\x01\x91a\x03.V[\x90V[\x93a\x03\xAE\x92``\x94\x92\x97\x96\x97`\x01\x80`\xA0\x1B\x03\x16\x86R` \x86\x01R`\x80`@\x86\x01R`\x80\x85\x01\x91a\x03.V[`\x01`\x01`\xA0\x1B\x03\x90\x94\x16\x91\x01RV[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x82\x11\x17a\x011W`@RV\xFE`\xC0`@R4a\x02\xB8Wa\x11\xBD\x808\x03\x80a\0\x19\x81a\x02\xBCV[\x92\x839\x81\x01\x90`\x80\x81\x83\x03\x12a\x02\xB8W\x80Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x91\x90\x82\x90\x03a\x02\xB8W` \x81\x01Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x90\x81\x90\x03a\x02\xB8W`@\x82\x01Q``\x83\x01Q\x90\x92`\x01`\x01`@\x1B\x03\x82\x11a\x02\xB8W\x01\x84`\x1F\x82\x01\x12\x15a\x02\xB8W\x80Q\x90`\x01`\x01`@\x1B\x03\x82\x11a\x02\x91Wa\0\x9F`\x1F\x83\x01`\x1F\x19\x16` \x01a\x02\xBCV[\x95\x82\x87R` \x83\x83\x01\x01\x11a\x02\xB8W\x81_\x92` \x80\x93\x01\x83\x89\x01^\x86\x01\x01R\x80\x15a\x02\xA5W_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16\x83\x17\x82U`\x01`\x01`\xA0\x1B\x03\x16\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x80\xA3`\x01\x80UC`\x80R`\xA0R`\x03\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x91\x90\x91\x17\x90U\x80Q`\x01`\x01`@\x1B\x03\x81\x11a\x02\x91W`\x04T`\x01\x81\x81\x1C\x91\x16\x80\x15a\x02\x87W[` \x82\x10\x14a\x02sW`\x1F\x81\x11a\x02\x10W[P` \x91`\x1F\x82\x11`\x01\x14a\x01\xB0W\x91\x81\x92_\x92a\x01\xA5W[PP\x81`\x01\x1B\x91_\x19\x90`\x03\x1B\x1C\x19\x16\x17`\x04U[`@Qa\x0E\xDB\x90\x81a\x02\xE2\x829`\x80Q\x81a\x06\x87\x01R`\xA0Q\x81a\x05g\x01R\xF3[\x01Q\x90P_\x80a\x01oV[`\x1F\x19\x82\x16\x92`\x04_R\x80_ \x91_[\x85\x81\x10a\x01\xF8WP\x83`\x01\x95\x10a\x01\xE0W[PPP\x81\x1B\x01`\x04Ua\x01\x84V[\x01Q_\x19`\xF8\x84`\x03\x1B\x16\x1C\x19\x16\x90U_\x80\x80a\x01\xD2V[\x91\x92` `\x01\x81\x92\x86\x85\x01Q\x81U\x01\x94\x01\x92\x01a\x01\xC0V[`\x04_R\x7F\x8A5\xAC\xFB\xC1_\xF8\x1A9\xAE}4O\xD7\t\xF2\x8E\x86\0\xB4\xAA\x8Ce\xC6\xB6K\xFE\x7F\xE3k\xD1\x9B`\x1F\x83\x01`\x05\x1C\x81\x01\x91` \x84\x10a\x02iW[`\x1F\x01`\x05\x1C\x01\x90[\x81\x81\x10a\x02^WPa\x01VV[_\x81U`\x01\x01a\x02QV[\x90\x91P\x81\x90a\x02HV[cNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[\x90`\x7F\x16\x90a\x01DV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[c\x1EO\xBD\xF7`\xE0\x1B_R_`\x04R`$_\xFD[_\x80\xFD[`@Q\x91\x90`\x1F\x01`\x1F\x19\x16\x82\x01`\x01`\x01`@\x1B\x03\x81\x11\x83\x82\x10\x17a\x02\x91W`@RV\xFE`\x80`@R`\x046\x10\x15a\0\x1AW[6\x15a\0\x18W_\x80\xFD[\0[_5`\xE0\x1C\x80c\x01\xFF\xC9\xA7\x14a\x01)W\x80c\x08\xEB\x89\xAB\x14a\x01$W\x80c\x15\x0Bz\x02\x14a\x01\x1FW\x80c3\x13{v\x14a\x01\x1AW\x80ca\xB1,f\x14a\x01\x15W\x80cqP\x18\xA6\x14a\x01\x10W\x80cq\x89\x1D\xB0\x14a\x01\x0BW\x80c\x8D\xA5\xCB[\x14a\x01\x06W\x80c\xA9M\xFCZ\x14a\x01\x01W\x80c\xB3\xA1\xAC\xD8\x14a\0\xFCW\x80c\xBC\x19|\x81\x14a\0\xF7W\x80c\xBF\x8A\xBF\xF8\x14a\0\xF2W\x80c\xE6O\xABM\x14a\0\xEDW\x80c\xE8\x8D9\xC0\x14a\0\xE8W\x80c\xF0$x\xDE\x14a\0\xE3W\x80c\xF2:na\x14a\0\xDEWc\xF2\xFD\xE3\x8B\x03a\0\x0EWa\t\xC6V[a\tmV[a\x08~V[a\x08=V[a\x08 V[a\x07\xAFV[a\x07\x11V[a\x06pV[a\x06HV[a\x06!V[a\x05\xE1V[a\x05\x8AV[a\x05PV[a\x03KV[a\x02\x86V[a\x01\x91V[4a\x01\x7FW` 6`\x03\x19\x01\x12a\x01\x7FW`\x045c\xFF\xFF\xFF\xFF`\xE0\x1B\x81\x16\x80\x91\x03a\x01\x7FW` \x90c\x02q\x18\x97`\xE5\x1B\x81\x14\x90\x81\x15a\x01nW[P`@Q\x90\x15\x15\x81R\xF3[c\x01\xFF\xC9\xA7`\xE0\x1B\x14\x90P_a\x01cV[_\x80\xFD[\x90\x81`@\x91\x03\x12a\x01\x7FW\x90V[4a\x01\x7FW`@6`\x03\x19\x01\x12a\x01\x7FW`$5`\x01`\x01`@\x1B\x03\x81\x11a\x01\x7FWa\x01\xC4a\0\x18\x916\x90`\x04\x01a\x01\x83V[`\x045a\nOV[`\x01`\x01`\xA0\x1B\x03\x81\x16\x03a\x01\x7FWV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[\x90`\x1F\x80\x19\x91\x01\x16\x81\x01\x90\x81\x10`\x01`\x01`@\x1B\x03\x82\x11\x17a\x02\x12W`@RV[a\x01\xDDV[`\x01`\x01`@\x1B\x03\x81\x11a\x02\x12W`\x1F\x01`\x1F\x19\x16` \x01\x90V[\x92\x91\x92a\x02>\x82a\x02\x17V[\x91a\x02L`@Q\x93\x84a\x01\xF1V[\x82\x94\x81\x84R\x81\x83\x01\x11a\x01\x7FW\x82\x81` \x93\x84_\x96\x017\x01\x01RV[\x90\x80`\x1F\x83\x01\x12\x15a\x01\x7FW\x81` a\x02\x83\x935\x91\x01a\x022V[\x90V[4a\x01\x7FW`\x806`\x03\x19\x01\x12a\x01\x7FWa\x02\xA2`\x045a\x01\xCCV[a\x02\xAD`$5a\x01\xCCV[`d5`\x01`\x01`@\x1B\x03\x81\x11a\x01\x7FWa\x02\xCC\x906\x90`\x04\x01a\x02hV[P`@Qc\n\x85\xBD\x01`\xE1\x1B\x81R` \x90\xF3[`@`\x03\x19\x82\x01\x12a\x01\x7FW`\x045\x91`\x01`\x01`@\x1B\x03\x83\x11a\x01\x7FW\x81`#\x84\x01\x12\x15a\x01\x7FW\x82`\x04\x015\x92`\x01`\x01`@\x1B\x03\x84\x11a\x01\x7FW\x82`$\x85\x83\x01\x01\x11a\x01\x7FW`$\x01\x92\x91`$5\x90`\x01`\x01`@\x1B\x03\x82\x11a\x01\x7FWa\x02\x83\x91`\x04\x01a\x01\x83V[4a\x01\x7FWa\x03Y6a\x02\xDFV[`\x02`\x01\x93\x92\x93T\x14a\x05AWa\x03\x7F\x90`\x02`\x01Ua\x03z\x81\x85\x85a\x0C\x0EV[a\x0B&V[`\x04\x83\x10a\x05$Wa\x03\x9Aa\x03\x94\x84\x84a\x0BkV[\x90a\x0B\x96V[a\x03\xA5\x84\x80\x85a\x0ByV[\x91`\x01`\x01`\xE0\x1B\x03\x19\x16c#z\x81o`\xE0\x1B\x81\x03a\x04\x95WPa\x03\xE9`\x01`\x01`@\x1B\x03\x84\x16`\xFF`\x01\x91\x80`\x08\x1C_R`\x02` R\x16\x1B`@_ T\x16\x15\x15\x90V[a\x04qW\x93a\x04\x1Ca\x04e\x92\x7F\xCA\xD1\xF3a\xC6\xE8Fd\xE8\x92#\x02\x91\xC8\xE8\xEB\x95Uh>\nj\\\xE8\xEA{ J\xC0\xAC6v\x96a\rMV[a\x04F`\x01`\x01`@\x1B\x03\x84\x16\x80`\x08\x1C_R`\x02` R`\x01`\xFF`@_ \x92\x16\x1B\x81T\x17\x90UV[a\x04Ya\x04T`\x05Ta\x0B\xCCV[`\x05UV[`@Q\x93\x84\x93\x84a\x0B\xEEV[\x03\x90\xA1a\0\x18`\x01\x80UV[PP`@Qc{\x97\xA6\xBB`\xE0\x1B\x81R\x92\x83\x92a\x04\x91\x92P`\x04\x84\x01a\x0BZV[\x03\x90\xFD[c\x102\x1E\x8B`\xE0\x1B\x03a\x05\x04Wa\x04\xCC`\x01`\x01`@\x1B\x03\x84\x16`\xFF`\x01\x91\x80`\x08\x1C_R`\x02` R\x16\x1B`@_ T\x16\x15\x15\x90V[a\x04qW\x93a\x04\xFFa\x04e\x92\x7F\xCA\xD1\xF3a\xC6\xE8Fd\xE8\x92#\x02\x91\xC8\xE8\xEB\x95Uh>\nj\\\xE8\xEA{ J\xC0\xAC6v\x96a\x0C\xE8V[a\x04\x1CV[PP`@QciB`\x0F`\xE1\x1B\x81R\x92\x83\x92a\x04\x91\x92P`\x04\x84\x01a\x0BZV[Pa\x04\x91`@Q\x92\x83\x92ciB`\x0F`\xE1\x1B\x84R`\x04\x84\x01a\x0BZV[c>\xE5\xAE\xB5`\xE0\x1B_R`\x04_\xFD[4a\x01\x7FW_6`\x03\x19\x01\x12a\x01\x7FW` `@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xF3[4a\x01\x7FW_6`\x03\x19\x01\x12a\x01\x7FWa\x05\xA2a\r\xBDV[_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16\x82U`\x01`\x01`\xA0\x1B\x03\x16\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x82\x80\xA3\0[4a\x01\x7FW` 6`\x03\x19\x01\x12a\x01\x7FW` a\x06\x17`\x045`\xFF`\x01\x91\x80`\x08\x1C_R`\x02` R\x16\x1B`@_ T\x16\x15\x15\x90V[`@Q\x90\x15\x15\x81R\xF3[4a\x01\x7FW_6`\x03\x19\x01\x12a\x01\x7FW_T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01\x7FW_6`\x03\x19\x01\x12a\x01\x7FW`\x03T`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x90\xF3[4a\x01\x7FW_6`\x03\x19\x01\x12a\x01\x7FW` `@Q\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x81R\xF3[\x90\x80`\x1F\x83\x01\x12\x15a\x01\x7FW\x815\x91`\x01`\x01`@\x1B\x03\x83\x11a\x02\x12W\x82`\x05\x1B\x90`@Q\x93a\x06\xDD` \x84\x01\x86a\x01\xF1V[\x84R` \x80\x85\x01\x92\x82\x01\x01\x92\x83\x11a\x01\x7FW` \x01\x90[\x82\x82\x10a\x07\x01WPPP\x90V[\x815\x81R` \x91\x82\x01\x91\x01a\x06\xF4V[4a\x01\x7FW`\xA06`\x03\x19\x01\x12a\x01\x7FWa\x07-`\x045a\x01\xCCV[a\x078`$5a\x01\xCCV[`D5`\x01`\x01`@\x1B\x03\x81\x11a\x01\x7FWa\x07W\x906\x90`\x04\x01a\x06\xAAV[P`d5`\x01`\x01`@\x1B\x03\x81\x11a\x01\x7FWa\x07w\x906\x90`\x04\x01a\x06\xAAV[P`\x845`\x01`\x01`@\x1B\x03\x81\x11a\x01\x7FWa\x07\x97\x906\x90`\x04\x01a\x02hV[P`@Qc\xBC\x19|\x81`\xE0\x1B\x81R\x80` \x81\x01[\x03\x90\xF3[4a\x01\x7FW` 6`\x03\x19\x01\x12a\x01\x7FW\x7Fj\xD3\x18\x8B\xA8\xF40\xFB\xA0el\xB0\xA7\xE89\xAB \xD5Xk\xA1\x1A\x14w\xD1\x8Fp\x92\xF8\xBE\xCE`\x045a\x07\xED\x81a\x01\xCCV[a\x07\xF5a\r\xBDV[`\x03\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x82\x17\x90U`@Q\x90\x81R` \x90\xA1\0[4a\x01\x7FW_6`\x03\x19\x01\x12a\x01\x7FW` `\x05T`@Q\x90\x81R\xF3[4a\x01\x7FWa\0\x18a\x08N6a\x02\xDFV[\x91a\x0C\x0EV[` `@\x92\x81\x83R\x80Q\x91\x82\x91\x82\x82\x86\x01R\x01\x84\x84\x01^_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[4a\x01\x7FW_6`\x03\x19\x01\x12a\x01\x7FW`@Q_`\x04T\x80`\x01\x1C\x90`\x01\x81\x16\x90\x81\x15a\tcW[` \x83\x10\x82\x14a\tOW\x82\x85R` \x85\x01\x91\x90\x81\x15a\t6WP`\x01\x14a\x08\xE4W[a\x07\xAB\x84a\x08\xD8\x81\x86\x03\x82a\x01\xF1V[`@Q\x91\x82\x91\x82a\x08TV[`\x04_\x90\x81R\x92P\x90\x7F\x8A5\xAC\xFB\xC1_\xF8\x1A9\xAE}4O\xD7\t\xF2\x8E\x86\0\xB4\xAA\x8Ce\xC6\xB6K\xFE\x7F\xE3k\xD1\x9B[\x81\x84\x10a\t\"WPP\x01a\x08\xD8\x82a\x08\xC8V[\x80T\x84\x84\x01R` \x90\x93\x01\x92`\x01\x01a\t\x0FV[`\xFF\x19\x16\x82RP\x90\x15\x15`\x05\x1B\x01\x90Pa\x08\xD8\x82a\x08\xC8V[cNH{q`\xE0\x1B_R`\"`\x04R`$_\xFD[\x91`\x7F\x16\x91a\x08\xA6V[4a\x01\x7FW`\xA06`\x03\x19\x01\x12a\x01\x7FWa\t\x89`\x045a\x01\xCCV[a\t\x94`$5a\x01\xCCV[`\x845`\x01`\x01`@\x1B\x03\x81\x11a\x01\x7FWa\t\xB3\x906\x90`\x04\x01a\x02hV[P`@Qc\xF2:na`\xE0\x1B\x81R` \x90\xF3[4a\x01\x7FW` 6`\x03\x19\x01\x12a\x01\x7FW`\x045a\t\xE3\x81a\x01\xCCV[a\t\xEBa\r\xBDV[`\x01`\x01`\xA0\x1B\x03\x16\x80\x15a\n<W_\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16\x83\x17\x82U`\x01`\x01`\xA0\x1B\x03\x16\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90\x80\xA3\0[c\x1EO\xBD\xF7`\xE0\x1B_R_`\x04R`$_\xFD[\x91` \x82\x01\x91`?a\na\x84\x83a\x0C,V[\x90P\x03a\x0B\x17W`\x01`\x01`@\x1B\x03a\n\x80a\n\x88\x94\x83\x96\x94\x96a\x0C,V[\x94\x90\x92a\x0B&V[\x16\x93_\x92[\x84\x84\x10\x15a\n\xDEWa\n\xC5`\x01\x91\x85`\x05\x1B\x85\x015\x90\x83\x89\x16\x15_\x14a\n\xCEW\x90a\n\xBE\x91_R` R`@_ \x90V[\x96`\x01\x1C\x90V[\x93\x01\x92\x94a\n\x8DV[a\n\xBE\x91_R` R`@_ \x90V[\x93P\x93\x90Pa\n\xEE\x91P\x15a\r\xE3V[a\n\xFEa\n\xFA\x82a\x0CaV[\x15\x90V[a\x0B\x05WPV[cD\xA1\x92\xFF`\xE0\x1B_R`\x04R`$_\xFD[c],^\x9B`\xE1\x1B_R`\x04_\xFD[5`\x01`\x01`@\x1B\x03\x81\x16\x81\x03a\x01\x7FW\x90V[\x90\x80` \x93\x92\x81\x84R\x84\x84\x017_\x82\x82\x01\x84\x01R`\x1F\x01`\x1F\x19\x16\x01\x01\x90V[\x91` a\x02\x83\x93\x81\x81R\x01\x91a\x0B:V[\x90`\x04\x11a\x01\x7FW\x90`\x04\x90V[\x90\x92\x91\x92\x83`\x04\x11a\x01\x7FW\x83\x11a\x01\x7FW`\x04\x01\x91`\x03\x19\x01\x90V[5`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x92\x91\x90`\x04\x82\x10a\x0B\xB1WPPV[`\x01`\x01`\xE0\x1B\x03\x19`\x04\x92\x90\x92\x03`\x03\x1B\x82\x90\x1B\x16\x16\x91PV[_\x19\x81\x14a\x0B\xDAW`\x01\x01\x90V[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`@\x90`\x01`\x01`@\x1B\x03a\x02\x83\x95\x93\x16\x81R\x81` \x82\x01R\x01\x91a\x0B:V[a\x0C\x1E\x90a\x0C*\x93\x926\x91a\x022V[` \x81Q\x91\x01 a\nOV[V[\x905\x90`\x1E\x19\x816\x03\x01\x82\x12\x15a\x01\x7FW\x01\x805\x90`\x01`\x01`@\x1B\x03\x82\x11a\x01\x7FW` \x01\x91\x81`\x05\x1B6\x03\x83\x13a\x01\x7FWV[`\x03T`@Qc9s!\x99`\xE2\x1B\x81R0`\x04\x82\x01R`$\x81\x01\x92\x90\x92R` \x90\x82\x90`D\x90\x82\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xFA\x90\x81\x15a\x0C\xDDW_\x91a\x0C\xA5WP\x90V[\x90P` \x81=` \x11a\x0C\xD5W[\x81a\x0C\xC0` \x93\x83a\x01\xF1V[\x81\x01\x03\x12a\x01\x7FWQ\x80\x15\x15\x81\x03a\x01\x7FW\x90V[=\x91Pa\x0C\xB3V[`@Q=_\x82>=\x90\xFD[\x90\x81\x01\x90`@\x81\x83\x03\x12a\x01\x7FW\x805a\r\x01\x81a\x01\xCCV[` \x82\x015\x91`\x01`\x01`@\x1B\x03\x83\x11a\x01\x7FW_\x93\x84\x93a\r#\x92\x01a\x02hV[\x80Q\x91` \x90\x91\x01\x90`\x01`\x01`\xA0\x1B\x03\x16Z\xF4a\r?a\x0E.V[\x90\x15a\rHWPV[a\x0E\x94V[\x90\x81\x01``\x82\x82\x03\x12a\x01\x7FW\x815a\re\x81a\x01\xCCV[` \x83\x015\x92`@\x81\x015\x90`\x01`\x01`@\x1B\x03\x82\x11a\x01\x7FWa\r\x9E\x93\x85\x92a\r\x8F\x92\x01a\x02hV[\x91`\x01`\x01`\xA0\x1B\x03\x16a\x0E]V[\x91\x90\x15a\r\xA9WPPV[b\xFA\xE2\xD5`\xE2\x1B_R`\x04R`$R`D_\xFD[_T`\x01`\x01`\xA0\x1B\x03\x163\x03a\r\xD0WV[c\x11\x8C\xDA\xA7`\xE0\x1B_R3`\x04R`$_\xFD[\x15a\r\xEAWV[`d`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R` `$\x82\x01R\x7FLibMerkle32: index out of bounds`D\x82\x01R\xFD[=\x15a\x0EXW=\x90a\x0E?\x82a\x02\x17V[\x91a\x0EM`@Q\x93\x84a\x01\xF1V[\x82R=_` \x84\x01>V[``\x90V[\x90\x92\x91\x92G\x93\x84\x82\x11a\x0E\x8CW_\x92\x83\x92` \x83Q\x93\x01\x91Z\xF1a\x0E\x7Fa\x0E.V[\x90\x15a\rHWP`\x01\x91\x90V[PPP_\x91\x90V[\x80Q\x90\x81a\x0E\xA0W_\x80\xFD[` \x01\xFD\xFE\xA2dipfsX\"\x12 y%\x81\xCD\xB4\xC6\x19\xBA\xE2y\xF0\xC9.\x04z\xADa\xEBL\xF6\xDCo\xA5\x82w\xBA\xEE\xF4'\x18\xD5}dsolcC\0\x08\x1E\x003\xA2dipfsX\"\x12 \xDB\xEE\xC0\xF6\x01\xCDu\x191\x04\xBE\xDB\xC4\x0Cz\xE4\x96\x94\xCDQ\xBEq\x06\xD8\x01\xF0\x8F\0\x0EW0\xEEdsolcC\0\x08\x1E\x003",
);
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Default, Debug, PartialEq, Eq, Hash)]
/**Event with signature `ApplicationCreated(address,address,bytes32,bytes,address)` and selector `0xd291ffe9436f2c57d5ce3e87ed33576f801053946651a2fb4fec5a406cf68cc5`.
```solidity
event ApplicationCreated(address indexed outputsMerkleRootValidator, address appOwner, bytes32 templateHash, bytes dataAvailability, address appContract);
```*/
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
#[derive(Clone)]
pub struct ApplicationCreated {
#[allow(missing_docs)]
pub outputsMerkleRootValidator: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub appOwner: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub templateHash: alloy::sol_types::private::FixedBytes<32>,
#[allow(missing_docs)]
pub dataAvailability: alloy::sol_types::private::Bytes,
#[allow(missing_docs)]
pub appContract: alloy::sol_types::private::Address,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
#[automatically_derived]
impl alloy_sol_types::SolEvent for ApplicationCreated {
type DataTuple<'a> = (
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::FixedBytes<32>,
alloy::sol_types::sol_data::Bytes,
alloy::sol_types::sol_data::Address,
);
type DataToken<'a> = <Self::DataTuple<
'a,
> as alloy_sol_types::SolType>::Token<'a>;
type TopicList = (
alloy_sol_types::sol_data::FixedBytes<32>,
alloy::sol_types::sol_data::Address,
);
const SIGNATURE: &'static str = "ApplicationCreated(address,address,bytes32,bytes,address)";
const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
210u8, 145u8, 255u8, 233u8, 67u8, 111u8, 44u8, 87u8, 213u8, 206u8, 62u8,
135u8, 237u8, 51u8, 87u8, 111u8, 128u8, 16u8, 83u8, 148u8, 102u8, 81u8,
162u8, 251u8, 79u8, 236u8, 90u8, 64u8, 108u8, 246u8, 140u8, 197u8,
]);
const ANONYMOUS: bool = false;
#[allow(unused_variables)]
#[inline]
fn new(
topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
) -> Self {
Self {
outputsMerkleRootValidator: topics.1,
appOwner: data.0,
templateHash: data.1,
dataAvailability: data.2,
appContract: data.3,
}
}
#[inline]
fn check_signature(
topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
) -> alloy_sol_types::Result<()> {
if topics.0 != Self::SIGNATURE_HASH {
return Err(
alloy_sol_types::Error::invalid_event_signature_hash(
Self::SIGNATURE,
topics.0,
Self::SIGNATURE_HASH,
),
);
}
Ok(())
}
#[inline]
fn tokenize_body(&self) -> Self::DataToken<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.appOwner,
),
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self.templateHash),
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
&self.dataAvailability,
),
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.appContract,
),
)
}
#[inline]
fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
(Self::SIGNATURE_HASH.into(), self.outputsMerkleRootValidator.clone())
}
#[inline]
fn encode_topics_raw(
&self,
out: &mut [alloy_sol_types::abi::token::WordToken],
) -> alloy_sol_types::Result<()> {
if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
return Err(alloy_sol_types::Error::Overrun);
}
out[0usize] = alloy_sol_types::abi::token::WordToken(
Self::SIGNATURE_HASH,
);
out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
&self.outputsMerkleRootValidator,
);
Ok(())
}
}
#[automatically_derived]
impl alloy_sol_types::private::IntoLogData for ApplicationCreated {
fn to_log_data(&self) -> alloy_sol_types::private::LogData {
From::from(self)
}
fn into_log_data(self) -> alloy_sol_types::private::LogData {
From::from(&self)
}
}
#[automatically_derived]
impl From<&ApplicationCreated> for alloy_sol_types::private::LogData {
#[inline]
fn from(this: &ApplicationCreated) -> alloy_sol_types::private::LogData {
alloy_sol_types::SolEvent::encode_log_data(this)
}
}
};
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `calculateApplicationAddress(address,address,bytes32,bytes,bytes32)` and selector `0x4269667b`.
```solidity
function calculateApplicationAddress(address outputsMerkleRootValidator, address appOwner, bytes32 templateHash, bytes memory dataAvailability, bytes32 salt) external view returns (address);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct calculateApplicationAddressCall {
#[allow(missing_docs)]
pub outputsMerkleRootValidator: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub appOwner: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub templateHash: alloy::sol_types::private::FixedBytes<32>,
#[allow(missing_docs)]
pub dataAvailability: alloy::sol_types::private::Bytes,
#[allow(missing_docs)]
pub salt: alloy::sol_types::private::FixedBytes<32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`calculateApplicationAddress(address,address,bytes32,bytes,bytes32)`](calculateApplicationAddressCall) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct calculateApplicationAddressReturn {
#[allow(missing_docs)]
pub _0: alloy::sol_types::private::Address,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
#[allow(dead_code)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::FixedBytes<32>,
alloy::sol_types::sol_data::Bytes,
alloy::sol_types::sol_data::FixedBytes<32>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Address,
alloy::sol_types::private::Address,
alloy::sol_types::private::FixedBytes<32>,
alloy::sol_types::private::Bytes,
alloy::sol_types::private::FixedBytes<32>,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(
_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<calculateApplicationAddressCall>
for UnderlyingRustTuple<'_> {
fn from(value: calculateApplicationAddressCall) -> Self {
(
value.outputsMerkleRootValidator,
value.appOwner,
value.templateHash,
value.dataAvailability,
value.salt,
)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>>
for calculateApplicationAddressCall {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
outputsMerkleRootValidator: tuple.0,
appOwner: tuple.1,
templateHash: tuple.2,
dataAvailability: tuple.3,
salt: tuple.4,
}
}
}
}
{
#[doc(hidden)]
#[allow(dead_code)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(
_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<calculateApplicationAddressReturn>
for UnderlyingRustTuple<'_> {
fn from(value: calculateApplicationAddressReturn) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>>
for calculateApplicationAddressReturn {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for calculateApplicationAddressCall {
type Parameters<'a> = (
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::FixedBytes<32>,
alloy::sol_types::sol_data::Bytes,
alloy::sol_types::sol_data::FixedBytes<32>,
);
type Token<'a> = <Self::Parameters<
'a,
> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::Address;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
type ReturnToken<'a> = <Self::ReturnTuple<
'a,
> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "calculateApplicationAddress(address,address,bytes32,bytes,bytes32)";
const SELECTOR: [u8; 4] = [66u8, 105u8, 102u8, 123u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.outputsMerkleRootValidator,
),
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.appOwner,
),
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self.templateHash),
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
&self.dataAvailability,
),
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self.salt),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<
'_,
> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(|r| {
let r: calculateApplicationAddressReturn = r.into();
r._0
})
}
#[inline]
fn abi_decode_returns_validate(
data: &[u8],
) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<
'_,
> as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
.map(|r| {
let r: calculateApplicationAddressReturn = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `newApplication(address,address,bytes32,bytes,bytes32)` and selector `0x2cc3ef7c`.
```solidity
function newApplication(address outputsMerkleRootValidator, address appOwner, bytes32 templateHash, bytes memory dataAvailability, bytes32 salt) external returns (address);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct newApplication_0Call {
#[allow(missing_docs)]
pub outputsMerkleRootValidator: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub appOwner: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub templateHash: alloy::sol_types::private::FixedBytes<32>,
#[allow(missing_docs)]
pub dataAvailability: alloy::sol_types::private::Bytes,
#[allow(missing_docs)]
pub salt: alloy::sol_types::private::FixedBytes<32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`newApplication(address,address,bytes32,bytes,bytes32)`](newApplication_0Call) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct newApplication_0Return {
#[allow(missing_docs)]
pub _0: alloy::sol_types::private::Address,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
#[allow(dead_code)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::FixedBytes<32>,
alloy::sol_types::sol_data::Bytes,
alloy::sol_types::sol_data::FixedBytes<32>,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Address,
alloy::sol_types::private::Address,
alloy::sol_types::private::FixedBytes<32>,
alloy::sol_types::private::Bytes,
alloy::sol_types::private::FixedBytes<32>,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(
_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<newApplication_0Call>
for UnderlyingRustTuple<'_> {
fn from(value: newApplication_0Call) -> Self {
(
value.outputsMerkleRootValidator,
value.appOwner,
value.templateHash,
value.dataAvailability,
value.salt,
)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>>
for newApplication_0Call {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
outputsMerkleRootValidator: tuple.0,
appOwner: tuple.1,
templateHash: tuple.2,
dataAvailability: tuple.3,
salt: tuple.4,
}
}
}
}
{
#[doc(hidden)]
#[allow(dead_code)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(
_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<newApplication_0Return>
for UnderlyingRustTuple<'_> {
fn from(value: newApplication_0Return) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>>
for newApplication_0Return {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for newApplication_0Call {
type Parameters<'a> = (
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::FixedBytes<32>,
alloy::sol_types::sol_data::Bytes,
alloy::sol_types::sol_data::FixedBytes<32>,
);
type Token<'a> = <Self::Parameters<
'a,
> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::Address;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
type ReturnToken<'a> = <Self::ReturnTuple<
'a,
> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "newApplication(address,address,bytes32,bytes,bytes32)";
const SELECTOR: [u8; 4] = [44u8, 195u8, 239u8, 124u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.outputsMerkleRootValidator,
),
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.appOwner,
),
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self.templateHash),
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
&self.dataAvailability,
),
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self.salt),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<
'_,
> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(|r| {
let r: newApplication_0Return = r.into();
r._0
})
}
#[inline]
fn abi_decode_returns_validate(
data: &[u8],
) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<
'_,
> as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
.map(|r| {
let r: newApplication_0Return = r.into();
r._0
})
}
}
};
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Default, Debug, PartialEq, Eq, Hash)]
/**Function with signature `newApplication(address,address,bytes32,bytes)` and selector `0x8d02370d`.
```solidity
function newApplication(address outputsMerkleRootValidator, address appOwner, bytes32 templateHash, bytes memory dataAvailability) external returns (address);
```*/
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct newApplication_1Call {
#[allow(missing_docs)]
pub outputsMerkleRootValidator: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub appOwner: alloy::sol_types::private::Address,
#[allow(missing_docs)]
pub templateHash: alloy::sol_types::private::FixedBytes<32>,
#[allow(missing_docs)]
pub dataAvailability: alloy::sol_types::private::Bytes,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Default, Debug, PartialEq, Eq, Hash)]
///Container type for the return parameters of the [`newApplication(address,address,bytes32,bytes)`](newApplication_1Call) function.
#[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
#[derive(Clone)]
pub struct newApplication_1Return {
#[allow(missing_docs)]
pub _0: alloy::sol_types::private::Address,
}
#[allow(
non_camel_case_types,
non_snake_case,
clippy::pub_underscore_fields,
clippy::style
)]
const _: () = {
use alloy::sol_types as alloy_sol_types;
{
#[doc(hidden)]
#[allow(dead_code)]
type UnderlyingSolTuple<'a> = (
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::FixedBytes<32>,
alloy::sol_types::sol_data::Bytes,
);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (
alloy::sol_types::private::Address,
alloy::sol_types::private::Address,
alloy::sol_types::private::FixedBytes<32>,
alloy::sol_types::private::Bytes,
);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(
_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<newApplication_1Call>
for UnderlyingRustTuple<'_> {
fn from(value: newApplication_1Call) -> Self {
(
value.outputsMerkleRootValidator,
value.appOwner,
value.templateHash,
value.dataAvailability,
)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>>
for newApplication_1Call {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self {
outputsMerkleRootValidator: tuple.0,
appOwner: tuple.1,
templateHash: tuple.2,
dataAvailability: tuple.3,
}
}
}
}
{
#[doc(hidden)]
#[allow(dead_code)]
type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
#[doc(hidden)]
type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
#[cfg(test)]
#[allow(dead_code, unreachable_patterns)]
fn _type_assertion(
_t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
) {
match _t {
alloy_sol_types::private::AssertTypeEq::<
<UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
>(_) => {}
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<newApplication_1Return>
for UnderlyingRustTuple<'_> {
fn from(value: newApplication_1Return) -> Self {
(value._0,)
}
}
#[automatically_derived]
#[doc(hidden)]
impl ::core::convert::From<UnderlyingRustTuple<'_>>
for newApplication_1Return {
fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
Self { _0: tuple.0 }
}
}
}
#[automatically_derived]
impl alloy_sol_types::SolCall for newApplication_1Call {
type Parameters<'a> = (
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::Address,
alloy::sol_types::sol_data::FixedBytes<32>,
alloy::sol_types::sol_data::Bytes,
);
type Token<'a> = <Self::Parameters<
'a,
> as alloy_sol_types::SolType>::Token<'a>;
type Return = alloy::sol_types::private::Address;
type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
type ReturnToken<'a> = <Self::ReturnTuple<
'a,
> as alloy_sol_types::SolType>::Token<'a>;
const SIGNATURE: &'static str = "newApplication(address,address,bytes32,bytes)";
const SELECTOR: [u8; 4] = [141u8, 2u8, 55u8, 13u8];
#[inline]
fn new<'a>(
tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
) -> Self {
tuple.into()
}
#[inline]
fn tokenize(&self) -> Self::Token<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.outputsMerkleRootValidator,
),
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
&self.appOwner,
),
<alloy::sol_types::sol_data::FixedBytes<
32,
> as alloy_sol_types::SolType>::tokenize(&self.templateHash),
<alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
&self.dataAvailability,
),
)
}
#[inline]
fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
(
<alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
ret,
),
)
}
#[inline]
fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<
'_,
> as alloy_sol_types::SolType>::abi_decode_sequence(data)
.map(|r| {
let r: newApplication_1Return = r.into();
r._0
})
}
#[inline]
fn abi_decode_returns_validate(
data: &[u8],
) -> alloy_sol_types::Result<Self::Return> {
<Self::ReturnTuple<
'_,
> as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
.map(|r| {
let r: newApplication_1Return = r.into();
r._0
})
}
}
};
///Container for all the [`ApplicationFactory`](self) function calls.
#[derive(Clone)]
#[derive(serde::Serialize, serde::Deserialize)]
#[derive()]
pub enum ApplicationFactoryCalls {
#[allow(missing_docs)]
calculateApplicationAddress(calculateApplicationAddressCall),
#[allow(missing_docs)]
newApplication_0(newApplication_0Call),
#[allow(missing_docs)]
newApplication_1(newApplication_1Call),
}
impl ApplicationFactoryCalls {
/// All the selectors of this enum.
///
/// Note that the selectors might not be in the same order as the variants.
/// No guarantees are made about the order of the selectors.
///
/// Prefer using `SolInterface` methods instead.
pub const SELECTORS: &'static [[u8; 4usize]] = &[
[44u8, 195u8, 239u8, 124u8],
[66u8, 105u8, 102u8, 123u8],
[141u8, 2u8, 55u8, 13u8],
];
/// The names of the variants in the same order as `SELECTORS`.
pub const VARIANT_NAMES: &'static [&'static str] = &[
::core::stringify!(newApplication_0),
::core::stringify!(calculateApplicationAddress),
::core::stringify!(newApplication_1),
];
/// The signatures in the same order as `SELECTORS`.
pub const SIGNATURES: &'static [&'static str] = &[
<newApplication_0Call as alloy_sol_types::SolCall>::SIGNATURE,
<calculateApplicationAddressCall as alloy_sol_types::SolCall>::SIGNATURE,
<newApplication_1Call as alloy_sol_types::SolCall>::SIGNATURE,
];
/// Returns the signature for the given selector, if known.
#[inline]
pub fn signature_by_selector(
selector: [u8; 4usize],
) -> ::core::option::Option<&'static str> {
match Self::SELECTORS.binary_search(&selector) {
::core::result::Result::Ok(idx) => {
::core::option::Option::Some(Self::SIGNATURES[idx])
}
::core::result::Result::Err(_) => ::core::option::Option::None,
}
}
/// Returns the enum variant name for the given selector, if known.
#[inline]
pub fn name_by_selector(
selector: [u8; 4usize],
) -> ::core::option::Option<&'static str> {
let sig = Self::signature_by_selector(selector)?;
sig.split_once('(').map(|(name, _)| name)
}
}
#[automatically_derived]
impl alloy_sol_types::SolInterface for ApplicationFactoryCalls {
const NAME: &'static str = "ApplicationFactoryCalls";
const MIN_DATA_LENGTH: usize = 160usize;
const COUNT: usize = 3usize;
#[inline]
fn selector(&self) -> [u8; 4] {
match self {
Self::calculateApplicationAddress(_) => {
<calculateApplicationAddressCall as alloy_sol_types::SolCall>::SELECTOR
}
Self::newApplication_0(_) => {
<newApplication_0Call as alloy_sol_types::SolCall>::SELECTOR
}
Self::newApplication_1(_) => {
<newApplication_1Call as alloy_sol_types::SolCall>::SELECTOR
}
}
}
#[inline]
fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
Self::SELECTORS.get(i).copied()
}
#[inline]
fn valid_selector(selector: [u8; 4]) -> bool {
Self::SELECTORS.binary_search(&selector).is_ok()
}
#[inline]
#[allow(non_snake_case)]
fn abi_decode_raw(
selector: [u8; 4],
data: &[u8],
) -> alloy_sol_types::Result<Self> {
static DECODE_SHIMS: &[fn(
&[u8],
) -> alloy_sol_types::Result<ApplicationFactoryCalls>] = &[
{
fn newApplication_0(
data: &[u8],
) -> alloy_sol_types::Result<ApplicationFactoryCalls> {
<newApplication_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(ApplicationFactoryCalls::newApplication_0)
}
newApplication_0
},
{
fn calculateApplicationAddress(
data: &[u8],
) -> alloy_sol_types::Result<ApplicationFactoryCalls> {
<calculateApplicationAddressCall as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(ApplicationFactoryCalls::calculateApplicationAddress)
}
calculateApplicationAddress
},
{
fn newApplication_1(
data: &[u8],
) -> alloy_sol_types::Result<ApplicationFactoryCalls> {
<newApplication_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
data,
)
.map(ApplicationFactoryCalls::newApplication_1)
}
newApplication_1
},
];
let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
return Err(
alloy_sol_types::Error::unknown_selector(
<Self as alloy_sol_types::SolInterface>::NAME,
selector,
),
);
};
DECODE_SHIMS[idx](data)
}
#[inline]
#[allow(non_snake_case)]
fn abi_decode_raw_validate(
selector: [u8; 4],
data: &[u8],
) -> alloy_sol_types::Result<Self> {
static DECODE_VALIDATE_SHIMS: &[fn(
&[u8],
) -> alloy_sol_types::Result<ApplicationFactoryCalls>] = &[
{
fn newApplication_0(
data: &[u8],
) -> alloy_sol_types::Result<ApplicationFactoryCalls> {
<newApplication_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(ApplicationFactoryCalls::newApplication_0)
}
newApplication_0
},
{
fn calculateApplicationAddress(
data: &[u8],
) -> alloy_sol_types::Result<ApplicationFactoryCalls> {
<calculateApplicationAddressCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(ApplicationFactoryCalls::calculateApplicationAddress)
}
calculateApplicationAddress
},
{
fn newApplication_1(
data: &[u8],
) -> alloy_sol_types::Result<ApplicationFactoryCalls> {
<newApplication_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
data,
)
.map(ApplicationFactoryCalls::newApplication_1)
}
newApplication_1
},
];
let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
return Err(
alloy_sol_types::Error::unknown_selector(
<Self as alloy_sol_types::SolInterface>::NAME,
selector,
),
);
};
DECODE_VALIDATE_SHIMS[idx](data)
}
#[inline]
fn abi_encoded_size(&self) -> usize {
match self {
Self::calculateApplicationAddress(inner) => {
<calculateApplicationAddressCall as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::newApplication_0(inner) => {
<newApplication_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
Self::newApplication_1(inner) => {
<newApplication_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
inner,
)
}
}
}
#[inline]
fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
match self {
Self::calculateApplicationAddress(inner) => {
<calculateApplicationAddressCall as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::newApplication_0(inner) => {
<newApplication_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
Self::newApplication_1(inner) => {
<newApplication_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
inner,
out,
)
}
}
}
}
///Container for all the [`ApplicationFactory`](self) events.
#[derive(Clone)]
#[derive(serde::Serialize, serde::Deserialize)]
#[derive(Debug, PartialEq, Eq, Hash)]
pub enum ApplicationFactoryEvents {
#[allow(missing_docs)]
ApplicationCreated(ApplicationCreated),
}
impl ApplicationFactoryEvents {
/// All the selectors of this enum.
///
/// Note that the selectors might not be in the same order as the variants.
/// No guarantees are made about the order of the selectors.
///
/// Prefer using `SolInterface` methods instead.
pub const SELECTORS: &'static [[u8; 32usize]] = &[
[
210u8, 145u8, 255u8, 233u8, 67u8, 111u8, 44u8, 87u8, 213u8, 206u8, 62u8,
135u8, 237u8, 51u8, 87u8, 111u8, 128u8, 16u8, 83u8, 148u8, 102u8, 81u8,
162u8, 251u8, 79u8, 236u8, 90u8, 64u8, 108u8, 246u8, 140u8, 197u8,
],
];
/// The names of the variants in the same order as `SELECTORS`.
pub const VARIANT_NAMES: &'static [&'static str] = &[
::core::stringify!(ApplicationCreated),
];
/// The signatures in the same order as `SELECTORS`.
pub const SIGNATURES: &'static [&'static str] = &[
<ApplicationCreated as alloy_sol_types::SolEvent>::SIGNATURE,
];
/// Returns the signature for the given selector, if known.
#[inline]
pub fn signature_by_selector(
selector: [u8; 32usize],
) -> ::core::option::Option<&'static str> {
match Self::SELECTORS.binary_search(&selector) {
::core::result::Result::Ok(idx) => {
::core::option::Option::Some(Self::SIGNATURES[idx])
}
::core::result::Result::Err(_) => ::core::option::Option::None,
}
}
/// Returns the enum variant name for the given selector, if known.
#[inline]
pub fn name_by_selector(
selector: [u8; 32usize],
) -> ::core::option::Option<&'static str> {
let sig = Self::signature_by_selector(selector)?;
sig.split_once('(').map(|(name, _)| name)
}
}
#[automatically_derived]
impl alloy_sol_types::SolEventInterface for ApplicationFactoryEvents {
const NAME: &'static str = "ApplicationFactoryEvents";
const COUNT: usize = 1usize;
fn decode_raw_log(
topics: &[alloy_sol_types::Word],
data: &[u8],
) -> alloy_sol_types::Result<Self> {
match topics.first().copied() {
Some(
<ApplicationCreated as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
) => {
<ApplicationCreated as alloy_sol_types::SolEvent>::decode_raw_log(
topics,
data,
)
.map(Self::ApplicationCreated)
}
_ => {
alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
name: <Self as alloy_sol_types::SolEventInterface>::NAME,
log: alloy_sol_types::private::Box::new(
alloy_sol_types::private::LogData::new_unchecked(
topics.to_vec(),
data.to_vec().into(),
),
),
})
}
}
}
}
#[automatically_derived]
impl alloy_sol_types::private::IntoLogData for ApplicationFactoryEvents {
fn to_log_data(&self) -> alloy_sol_types::private::LogData {
match self {
Self::ApplicationCreated(inner) => {
alloy_sol_types::private::IntoLogData::to_log_data(inner)
}
}
}
fn into_log_data(self) -> alloy_sol_types::private::LogData {
match self {
Self::ApplicationCreated(inner) => {
alloy_sol_types::private::IntoLogData::into_log_data(inner)
}
}
}
}
use alloy::contract as alloy_contract;
/**Creates a new wrapper around an on-chain [`ApplicationFactory`](self) contract instance.
See the [wrapper's documentation](`ApplicationFactoryInstance`) for more details.*/
#[inline]
pub const fn new<
P: alloy_contract::private::Provider<N>,
N: alloy_contract::private::Network,
>(
address: alloy_sol_types::private::Address,
__provider: P,
) -> ApplicationFactoryInstance<P, N> {
ApplicationFactoryInstance::<P, N>::new(address, __provider)
}
/**Deploys this contract using the given `provider` and constructor arguments, if any.
Returns a new instance of the contract, if the deployment was successful.
For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
#[inline]
pub fn deploy<
P: alloy_contract::private::Provider<N>,
N: alloy_contract::private::Network,
>(
__provider: P,
) -> impl ::core::future::Future<
Output = alloy_contract::Result<ApplicationFactoryInstance<P, N>>,
> {
ApplicationFactoryInstance::<P, N>::deploy(__provider)
}
/**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
and constructor arguments, if any.
This is a simple wrapper around creating a `RawCallBuilder` with the data set to
the bytecode concatenated with the constructor's ABI-encoded arguments.*/
#[inline]
pub fn deploy_builder<
P: alloy_contract::private::Provider<N>,
N: alloy_contract::private::Network,
>(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
ApplicationFactoryInstance::<P, N>::deploy_builder(__provider)
}
/**A [`ApplicationFactory`](self) instance.
Contains type-safe methods for interacting with an on-chain instance of the
[`ApplicationFactory`](self) contract located at a given `address`, using a given
provider `P`.
If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
documentation on how to provide it), the `deploy` and `deploy_builder` methods can
be used to deploy a new instance of the contract.
See the [module-level documentation](self) for all the available methods.*/
#[derive(Clone)]
pub struct ApplicationFactoryInstance<P, N = alloy_contract::private::Ethereum> {
address: alloy_sol_types::private::Address,
provider: P,
_network: ::core::marker::PhantomData<N>,
}
#[automatically_derived]
impl<P, N> ::core::fmt::Debug for ApplicationFactoryInstance<P, N> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
f.debug_tuple("ApplicationFactoryInstance").field(&self.address).finish()
}
}
/// Instantiation and getters/setters.
impl<
P: alloy_contract::private::Provider<N>,
N: alloy_contract::private::Network,
> ApplicationFactoryInstance<P, N> {
/**Creates a new wrapper around an on-chain [`ApplicationFactory`](self) contract instance.
See the [wrapper's documentation](`ApplicationFactoryInstance`) for more details.*/
#[inline]
pub const fn new(
address: alloy_sol_types::private::Address,
__provider: P,
) -> Self {
Self {
address,
provider: __provider,
_network: ::core::marker::PhantomData,
}
}
/**Deploys this contract using the given `provider` and constructor arguments, if any.
Returns a new instance of the contract, if the deployment was successful.
For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
#[inline]
pub async fn deploy(
__provider: P,
) -> alloy_contract::Result<ApplicationFactoryInstance<P, N>> {
let call_builder = Self::deploy_builder(__provider);
let contract_address = call_builder.deploy().await?;
Ok(Self::new(contract_address, call_builder.provider))
}
/**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
and constructor arguments, if any.
This is a simple wrapper around creating a `RawCallBuilder` with the data set to
the bytecode concatenated with the constructor's ABI-encoded arguments.*/
#[inline]
pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
alloy_contract::RawCallBuilder::new_raw_deploy(
__provider,
::core::clone::Clone::clone(&BYTECODE),
)
}
/// Returns a reference to the address.
#[inline]
pub const fn address(&self) -> &alloy_sol_types::private::Address {
&self.address
}
/// Sets the address.
#[inline]
pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
self.address = address;
}
/// Sets the address and returns `self`.
pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
self.set_address(address);
self
}
/// Returns a reference to the provider.
#[inline]
pub const fn provider(&self) -> &P {
&self.provider
}
}
impl<P: ::core::clone::Clone, N> ApplicationFactoryInstance<&P, N> {
/// Clones the provider and returns a new instance with the cloned provider.
#[inline]
pub fn with_cloned_provider(self) -> ApplicationFactoryInstance<P, N> {
ApplicationFactoryInstance {
address: self.address,
provider: ::core::clone::Clone::clone(&self.provider),
_network: ::core::marker::PhantomData,
}
}
}
/// Function calls.
impl<
P: alloy_contract::private::Provider<N>,
N: alloy_contract::private::Network,
> ApplicationFactoryInstance<P, N> {
/// Creates a new call builder using this contract instance's provider and address.
///
/// Note that the call can be any function call, not just those defined in this
/// contract. Prefer using the other methods for building type-safe contract calls.
pub fn call_builder<C: alloy_sol_types::SolCall>(
&self,
call: &C,
) -> alloy_contract::SolCallBuilder<&P, C, N> {
alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
}
///Creates a new call builder for the [`calculateApplicationAddress`] function.
pub fn calculateApplicationAddress(
&self,
outputsMerkleRootValidator: alloy::sol_types::private::Address,
appOwner: alloy::sol_types::private::Address,
templateHash: alloy::sol_types::private::FixedBytes<32>,
dataAvailability: alloy::sol_types::private::Bytes,
salt: alloy::sol_types::private::FixedBytes<32>,
) -> alloy_contract::SolCallBuilder<&P, calculateApplicationAddressCall, N> {
self.call_builder(
&calculateApplicationAddressCall {
outputsMerkleRootValidator,
appOwner,
templateHash,
dataAvailability,
salt,
},
)
}
///Creates a new call builder for the [`newApplication_0`] function.
pub fn newApplication_0(
&self,
outputsMerkleRootValidator: alloy::sol_types::private::Address,
appOwner: alloy::sol_types::private::Address,
templateHash: alloy::sol_types::private::FixedBytes<32>,
dataAvailability: alloy::sol_types::private::Bytes,
salt: alloy::sol_types::private::FixedBytes<32>,
) -> alloy_contract::SolCallBuilder<&P, newApplication_0Call, N> {
self.call_builder(
&newApplication_0Call {
outputsMerkleRootValidator,
appOwner,
templateHash,
dataAvailability,
salt,
},
)
}
///Creates a new call builder for the [`newApplication_1`] function.
pub fn newApplication_1(
&self,
outputsMerkleRootValidator: alloy::sol_types::private::Address,
appOwner: alloy::sol_types::private::Address,
templateHash: alloy::sol_types::private::FixedBytes<32>,
dataAvailability: alloy::sol_types::private::Bytes,
) -> alloy_contract::SolCallBuilder<&P, newApplication_1Call, N> {
self.call_builder(
&newApplication_1Call {
outputsMerkleRootValidator,
appOwner,
templateHash,
dataAvailability,
},
)
}
}
/// Event filters.
impl<
P: alloy_contract::private::Provider<N>,
N: alloy_contract::private::Network,
> ApplicationFactoryInstance<P, N> {
/// Creates a new event filter using this contract instance's provider and address.
///
/// Note that the type can be any event, not just those defined in this contract.
/// Prefer using the other methods for building type-safe event filters.
pub fn event_filter<E: alloy_sol_types::SolEvent>(
&self,
) -> alloy_contract::Event<&P, E, N> {
alloy_contract::Event::new_sol(&self.provider, &self.address)
}
///Creates a new event filter for the [`ApplicationCreated`] event.
pub fn ApplicationCreated_filter(
&self,
) -> alloy_contract::Event<&P, ApplicationCreated, N> {
self.event_filter::<ApplicationCreated>()
}
}
}