From 08b5a30b7f7ddb0d448aeb0032d3b7231bbd4c4d Mon Sep 17 00:00:00 2001 From: Howard Date: Fri, 28 Nov 2025 13:46:12 -0500 Subject: [PATCH 01/18] Update ABIs and rust bindings --- rust/lit-core/lit-blockchain-lite/abis/PKPHelper.json | 4 ++-- rust/lit-core/lit-blockchain-lite/src/contracts/pkp_helper.rs | 4 ++-- rust/lit-core/lit-blockchain/abis/PKPHelper.json | 4 ++-- rust/lit-core/lit-blockchain/src/contracts/pkp_helper.rs | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/rust/lit-core/lit-blockchain-lite/abis/PKPHelper.json b/rust/lit-core/lit-blockchain-lite/abis/PKPHelper.json index e0a7871..f18177c 100644 --- a/rust/lit-core/lit-blockchain-lite/abis/PKPHelper.json +++ b/rust/lit-core/lit-blockchain-lite/abis/PKPHelper.json @@ -1007,8 +1007,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50604051613a76380380613a7683398101604081905261002f916100d5565b61003833610085565b600280546001600160a01b0384166001600160a01b03198216811783558392916001600160a81b03191617600160a01b83838111156100795761007961011f565b02179055505050610135565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100e857600080fd5b82516001600160a01b03811681146100ff57600080fd5b60208401519092506003811061011457600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b613932806101446000396000f3fe60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a2646970667358221220bd871fe023e9ef357338715e5dd375edf8749dc93ba7e26190e242b547eb6af764736f6c634300081c0033", - "deployedBytecode": "0x60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a2646970667358221220bd871fe023e9ef357338715e5dd375edf8749dc93ba7e26190e242b547eb6af764736f6c634300081c0033", + "bytecode": "0x608060405234801561001057600080fd5b50604051613a76380380613a7683398101604081905261002f916100d5565b61003833610085565b600280546001600160a01b0384166001600160a01b03198216811783558392916001600160a81b03191617600160a01b83838111156100795761007961011f565b02179055505050610135565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100e857600080fd5b82516001600160a01b03811681146100ff57600080fd5b60208401519092506003811061011457600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b613932806101446000396000f3fe60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a264697066735822122001cf4dad4e3b8669662a3414bbd23a6ede2a3734f393956c3e5288072fe553ab64736f6c634300081c0033", + "deployedBytecode": "0x60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a264697066735822122001cf4dad4e3b8669662a3414bbd23a6ede2a3734f393956c3e5288072fe553ab64736f6c634300081c0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/rust/lit-core/lit-blockchain-lite/src/contracts/pkp_helper.rs b/rust/lit-core/lit-blockchain-lite/src/contracts/pkp_helper.rs index 0a2b90c..b0e7cd9 100644 --- a/rust/lit-core/lit-blockchain-lite/src/contracts/pkp_helper.rs +++ b/rust/lit-core/lit-blockchain-lite/src/contracts/pkp_helper.rs @@ -1434,13 +1434,13 @@ pub mod pkp_helper { __abi, ); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa:v8\x03\x80a:v\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\xD5V[a\083a\0\x85V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x82\x16\x81\x17\x83U\x83\x92\x91`\x01`\x01`\xA8\x1B\x03\x19\x16\x17`\x01`\xA0\x1B\x83\x83\x81\x11\x15a\0yWa\0ya\x01\x1FV[\x02\x17\x90UPPPa\x015V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\0\x80`@\x83\x85\x03\x12\x15a\0\xE8W`\0\x80\xFD[\x82Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xFFW`\0\x80\xFD[` \x84\x01Q\x90\x92P`\x03\x81\x10a\x01\x14W`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[a92\x80a\x01D`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \xBD\x87\x1F\xE0#\xE9\xEF5s8q^]\xD3u\xED\xF8t\x9D\xC9;\xA7\xE2a\x90\xE2B\xB5G\xEBj\xF7dsolcC\0\x08\x1C\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa:v8\x03\x80a:v\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\xD5V[a\083a\0\x85V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x82\x16\x81\x17\x83U\x83\x92\x91`\x01`\x01`\xA8\x1B\x03\x19\x16\x17`\x01`\xA0\x1B\x83\x83\x81\x11\x15a\0yWa\0ya\x01\x1FV[\x02\x17\x90UPPPa\x015V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\0\x80`@\x83\x85\x03\x12\x15a\0\xE8W`\0\x80\xFD[\x82Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xFFW`\0\x80\xFD[` \x84\x01Q\x90\x92P`\x03\x81\x10a\x01\x14W`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[a92\x80a\x01D`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \x01\xCFM\xADN;\x86if*4\x14\xBB\xD2:n\xDE*74\xF3\x93\x95l>R\x88\x07/\xE5S\xABdsolcC\0\x08\x1C\x003"; /// The bytecode of the contract. pub static PKPHELPER_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( __BYTECODE, ); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \xBD\x87\x1F\xE0#\xE9\xEF5s8q^]\xD3u\xED\xF8t\x9D\xC9;\xA7\xE2a\x90\xE2B\xB5G\xEBj\xF7dsolcC\0\x08\x1C\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \x01\xCFM\xADN;\x86if*4\x14\xBB\xD2:n\xDE*74\xF3\x93\x95l>R\x88\x07/\xE5S\xABdsolcC\0\x08\x1C\x003"; /// The deployed bytecode of the contract. pub static PKPHELPER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( __DEPLOYED_BYTECODE, diff --git a/rust/lit-core/lit-blockchain/abis/PKPHelper.json b/rust/lit-core/lit-blockchain/abis/PKPHelper.json index e0a7871..f18177c 100644 --- a/rust/lit-core/lit-blockchain/abis/PKPHelper.json +++ b/rust/lit-core/lit-blockchain/abis/PKPHelper.json @@ -1007,8 +1007,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50604051613a76380380613a7683398101604081905261002f916100d5565b61003833610085565b600280546001600160a01b0384166001600160a01b03198216811783558392916001600160a81b03191617600160a01b83838111156100795761007961011f565b02179055505050610135565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100e857600080fd5b82516001600160a01b03811681146100ff57600080fd5b60208401519092506003811061011457600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b613932806101446000396000f3fe60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a2646970667358221220bd871fe023e9ef357338715e5dd375edf8749dc93ba7e26190e242b547eb6af764736f6c634300081c0033", - "deployedBytecode": "0x60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a2646970667358221220bd871fe023e9ef357338715e5dd375edf8749dc93ba7e26190e242b547eb6af764736f6c634300081c0033", + "bytecode": "0x608060405234801561001057600080fd5b50604051613a76380380613a7683398101604081905261002f916100d5565b61003833610085565b600280546001600160a01b0384166001600160a01b03198216811783558392916001600160a81b03191617600160a01b83838111156100795761007961011f565b02179055505050610135565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100e857600080fd5b82516001600160a01b03811681146100ff57600080fd5b60208401519092506003811061011457600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b613932806101446000396000f3fe60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a264697066735822122001cf4dad4e3b8669662a3414bbd23a6ede2a3734f393956c3e5288072fe553ab64736f6c634300081c0033", + "deployedBytecode": "0x60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a264697066735822122001cf4dad4e3b8669662a3414bbd23a6ede2a3734f393956c3e5288072fe553ab64736f6c634300081c0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/rust/lit-core/lit-blockchain/src/contracts/pkp_helper.rs b/rust/lit-core/lit-blockchain/src/contracts/pkp_helper.rs index f6a2c9d..8f76b9f 100644 --- a/rust/lit-core/lit-blockchain/src/contracts/pkp_helper.rs +++ b/rust/lit-core/lit-blockchain/src/contracts/pkp_helper.rs @@ -1416,13 +1416,13 @@ pub mod pkp_helper { __abi, ); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa:v8\x03\x80a:v\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\xD5V[a\083a\0\x85V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x82\x16\x81\x17\x83U\x83\x92\x91`\x01`\x01`\xA8\x1B\x03\x19\x16\x17`\x01`\xA0\x1B\x83\x83\x81\x11\x15a\0yWa\0ya\x01\x1FV[\x02\x17\x90UPPPa\x015V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\0\x80`@\x83\x85\x03\x12\x15a\0\xE8W`\0\x80\xFD[\x82Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xFFW`\0\x80\xFD[` \x84\x01Q\x90\x92P`\x03\x81\x10a\x01\x14W`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[a92\x80a\x01D`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \xBD\x87\x1F\xE0#\xE9\xEF5s8q^]\xD3u\xED\xF8t\x9D\xC9;\xA7\xE2a\x90\xE2B\xB5G\xEBj\xF7dsolcC\0\x08\x1C\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa:v8\x03\x80a:v\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\xD5V[a\083a\0\x85V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x82\x16\x81\x17\x83U\x83\x92\x91`\x01`\x01`\xA8\x1B\x03\x19\x16\x17`\x01`\xA0\x1B\x83\x83\x81\x11\x15a\0yWa\0ya\x01\x1FV[\x02\x17\x90UPPPa\x015V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\0\x80`@\x83\x85\x03\x12\x15a\0\xE8W`\0\x80\xFD[\x82Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xFFW`\0\x80\xFD[` \x84\x01Q\x90\x92P`\x03\x81\x10a\x01\x14W`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[a92\x80a\x01D`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \x01\xCFM\xADN;\x86if*4\x14\xBB\xD2:n\xDE*74\xF3\x93\x95l>R\x88\x07/\xE5S\xABdsolcC\0\x08\x1C\x003"; /// The bytecode of the contract. pub static PKPHELPER_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( __BYTECODE, ); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \xBD\x87\x1F\xE0#\xE9\xEF5s8q^]\xD3u\xED\xF8t\x9D\xC9;\xA7\xE2a\x90\xE2B\xB5G\xEBj\xF7dsolcC\0\x08\x1C\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \x01\xCFM\xADN;\x86if*4\x14\xBB\xD2:n\xDE*74\xF3\x93\x95l>R\x88\x07/\xE5S\xABdsolcC\0\x08\x1C\x003"; /// The deployed bytecode of the contract. pub static PKPHELPER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( __DEPLOYED_BYTECODE, From bdd2fdd6db48b1f88b4aa885ef63ace539ae7127 Mon Sep 17 00:00:00 2001 From: Howard Tam Date: Fri, 28 Nov 2025 19:11:12 -0800 Subject: [PATCH 02/18] Implement veNFT interface and link with existing staking system --- .../lit-node/Staking/LibStakingNFT.sol | 202 ++++++++++++++++ .../lit-node/Staking/LibStakingStorage.sol | 35 +++ .../lit-node/Staking/StakingAdminFacet.sol | 7 +- .../lit-node/Staking/StakingCommon.sol | 191 ++------------- .../lit-node/Staking/StakingFacet.sol | 54 +++-- .../lit-node/Staking/StakingNFTFacet.sol | 228 ++++++++++++++++++ .../lit-node/Staking/StakingUtilsLib.sol | 171 +++++++++++++ .../lit-node/Staking/StakingViewsFacet.sol | 17 ++ 8 files changed, 723 insertions(+), 182 deletions(-) create mode 100644 blockchain/contracts/contracts/lit-node/Staking/LibStakingNFT.sol create mode 100644 blockchain/contracts/contracts/lit-node/Staking/StakingNFTFacet.sol diff --git a/blockchain/contracts/contracts/lit-node/Staking/LibStakingNFT.sol b/blockchain/contracts/contracts/lit-node/Staking/LibStakingNFT.sol new file mode 100644 index 0000000..1c52561 --- /dev/null +++ b/blockchain/contracts/contracts/lit-node/Staking/LibStakingNFT.sol @@ -0,0 +1,202 @@ +//SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity ^0.8.17; + +import { EnumerableSet } from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"; +import { EnumerableSetViewFriendly } from "@lit-protocol/openzeppelin-contracts/utils/structs/EnumerableSetViewFriendly.sol"; +import { LibStakingStorage } from "./LibStakingStorage.sol"; +import { StakingViewsFacet } from "./StakingViewsFacet.sol"; +import { StakingFacet } from "./StakingFacet.sol"; +import { StakingAcrossRealmsFacet } from "./StakingAcrossRealmsFacet.sol"; +import { FixedPointMathLib } from "solady/src/utils/FixedPointMathLib.sol"; +import { console } from "hardhat/console.sol"; +import { StakingNFTFacet } from "./StakingNFTFacet.sol"; + +library LibStakingNFT { + using EnumerableSet for EnumerableSet.AddressSet; + using EnumerableSetViewFriendly for EnumerableSetViewFriendly.AddressSet; + + function s() internal pure returns (LibStakingStorage.NFTStorage storage) { + return LibStakingStorage.getNFTStorage(); + } + + function staking_s() + internal + pure + returns (LibStakingStorage.GlobalStakingStorage storage) + { + return LibStakingStorage.getStakingStorage(); + } + + function views() internal view returns (StakingViewsFacet) { + return StakingViewsFacet(address(this)); + } + + function nft() internal view returns (StakingNFTFacet) { + return StakingNFTFacet(address(this)); + } + + /// @notice Handles the transfer of a stake record / NFT by updating the ownership + /// of the stake record and the corresponding staking related data structures. + /// @dev We choose to implement logic within a library instead of + /// introducing any remove / add functions in StakingFacet to avoid + /// potential security issues. + function handleNFTStakeRecordTransfer( + address from, + address to, + uint256 tokenId, + LibStakingStorage.MappedStakeRecord memory mappedStakeRecord + ) internal { + // First get a reference to the stake record. + LibStakingStorage.StakerVault storage fromUserStakerVault = staking_s() + .vaults[mappedStakeRecord.operatorStakerAddress][from]; + LibStakingStorage.StakeRecord memory fromUserStakerRecord; + uint256 stakeRecordIdx; + for (uint256 i = 0; i < fromUserStakerVault.stakes.length; i++) { + if ( + fromUserStakerVault.stakes[i].id == + mappedStakeRecord.stakeRecordId + ) { + fromUserStakerRecord = fromUserStakerVault.stakes[i]; + stakeRecordIdx = i; + break; + } + } + + // Add the stake record to the new staker vault. Find the index of the first empty slot. + LibStakingStorage.StakerVault storage toUserStakerVault = staking_s() + .vaults[mappedStakeRecord.operatorStakerAddress][to]; + uint256 toStakerVaultFreeSlotIdx; + for (uint256 i = 0; i < toUserStakerVault.stakes.length; i++) { + if (!toUserStakerVault.stakes[i].loaded) { + toStakerVaultFreeSlotIdx = i; + break; + } + } + // Update the stake record id and lastUpdateTimestamp before setting in to staker vault + toUserStakerVault.lastStakeRecordId += 1; + fromUserStakerRecord.id = toUserStakerVault.lastStakeRecordId; + fromUserStakerRecord.lastUpdateTimestamp = block.timestamp; + toUserStakerVault.stakes[ + toStakerVaultFreeSlotIdx + ] = fromUserStakerRecord; + + // Delete the stake record from the from staker vault. + fromUserStakerVault.stakes[stakeRecordIdx] = LibStakingStorage + .StakeRecord({ + id: 0, + amount: 0, + unfreezeStart: 0, + timeLock: 0, + lastUpdateTimestamp: 0, + lastRewardEpochClaimed: 0, + loaded: false, + frozen: false, + initialSharePrice: 0, + attributionAddress: address(0), + tokenId: 0 + }); + + // Update staking-related data structures. + // If this was the last stake this delegator had against this validator, then + // remove this validator from stakerToValidatorsTheyStakedTo + uint256 stakeRecordCountForOperatorStakerFrom = views() + .getStakeRecordCount(from, mappedStakeRecord.operatorStakerAddress); + if (stakeRecordCountForOperatorStakerFrom == 0) { + staking_s().stakerToValidatorsTheyStakedTo[from].remove( + mappedStakeRecord.operatorStakerAddress + ); + } + staking_s().stakerToValidatorsTheyStakedTo[to].add( + mappedStakeRecord.operatorStakerAddress + ); + + // If this was the last unfreezing stake this delegator had against this validator, then + // remove this validator from validatorToDelegatedStakersWithUnfreezingStakes + uint256 unfrozenStakeCountForUserFrom = views() + .getUnfrozenStakeCountForUser( + from, + mappedStakeRecord.operatorStakerAddress + ); + if (unfrozenStakeCountForUserFrom == 0) { + staking_s() + .validatorToDelegatedStakersWithUnfreezingStakes[ + mappedStakeRecord.operatorStakerAddress + ] + .remove(from); + } + if (fromUserStakerRecord.unfreezeStart > 0) { + staking_s() + .validatorToDelegatedStakersWithUnfreezingStakes[ + mappedStakeRecord.operatorStakerAddress + ] + .add(to); + } + + s().tokenToStakeRecord[tokenId] = LibStakingStorage.MappedStakeRecord({ + operatorStakerAddress: mappedStakeRecord.operatorStakerAddress, + stakeRecordId: toUserStakerVault.lastStakeRecordId + }); + } + + /// @notice Adds a new token to a given address and returns the token ID. + function addNewTokenTo(address to) internal returns (uint256 tokenId) { + s().tokenCount += 1; + tokenId = s().tokenCount; + _addTokenTo(to, tokenId); + } + + /// @dev Add a NFT to a given address + /// Throws if `tokenId` is owned by someone. + function _addTokenTo(address to, uint256 tokenId) internal { + // Throws if `_tokenId` is owned by someone + assert(nft().ownerOf(tokenId) == address(0)); + // Change the owner + s().tokenToOwner[tokenId] = to; + // Update owner token index tracking + uint256 currentCount = s().ownerToTokenCount[to]; + + s().ownerToIndexToToken[to][currentCount] = tokenId; + s().tokenToOwnerIndex[tokenId] = currentCount; + // Change count tracking + s().ownerToTokenCount[to] += 1; + } + + /// @dev Remove a NFT from a given address + /// Throws if `from` is not the current owner. + function _removeTokenFrom(address from, uint256 tokenId) internal { + // Throws if `from` is not the current owner + assert(nft().ownerOf(tokenId) == from); + // Change the owner + s().tokenToOwner[tokenId] = address(0); + + // Update owner token index tracking using swap-and-pop pattern + uint256 currentIndex = s().tokenToOwnerIndex[tokenId]; + uint256 lastIndex = s().ownerToTokenCount[from] - 1; + + if (currentIndex != lastIndex) { + // Move the last token to the position of the token being removed + uint256 lastTokenId = s().ownerToIndexToToken[from][lastIndex]; + s().ownerToIndexToToken[from][currentIndex] = lastTokenId; + s().tokenToOwnerIndex[lastTokenId] = currentIndex; + } + + // Delete the token from mappings + delete s().ownerToIndexToToken[from][lastIndex]; + delete s().tokenToOwnerIndex[tokenId]; + + // Change count tracking + s().ownerToTokenCount[from] -= 1; + } + + /// @notice Updates the token to stake record mapping. + function updateTokenToStakeRecord( + uint256 tokenId, + address operatorStakerAddress, + uint256 stakeRecordId + ) internal { + s().tokenToStakeRecord[tokenId] = LibStakingStorage.MappedStakeRecord({ + operatorStakerAddress: operatorStakerAddress, + stakeRecordId: stakeRecordId + }); + } +} diff --git a/blockchain/contracts/contracts/lit-node/Staking/LibStakingStorage.sol b/blockchain/contracts/contracts/lit-node/Staking/LibStakingStorage.sol index 6779c6f..c5ba9d7 100644 --- a/blockchain/contracts/contracts/lit-node/Staking/LibStakingStorage.sol +++ b/blockchain/contracts/contracts/lit-node/Staking/LibStakingStorage.sol @@ -25,6 +25,7 @@ library LibStakingStorage { bytes32 constant GLOBAL_STAKING_POSITION = keccak256("global.staking.storage"); + bytes32 constant NFT_STORAGE_POSITION = keccak256("nft.storage"); enum States { Active, @@ -61,6 +62,8 @@ library LibStakingStorage { /// attributed to at the time of creation via Validator.delegatedStakeAmount and Validator.delegatedStakeWeight /// fields. address attributionAddress; + /// @notice The token ID of the NFT that the stake record is associated with. + uint256 tokenId; } struct StakerVault { @@ -416,6 +419,27 @@ library LibStakingStorage { bool asyncActionsEnabled; } + struct MappedStakeRecord { + address operatorStakerAddress; + uint256 stakeRecordId; + } + + struct NFTStorage { + mapping(bytes4 => bool) supportedInterfaces; + mapping(address => uint256) ownerToTokenCount; + // Mapping from owner to index to tokenId + mapping(address => mapping(uint256 => uint256)) ownerToIndexToToken; + mapping(uint256 => address) tokenToOwner; + mapping(uint256 => address) tokenToApprovals; + // Mapping from tokenId to index in owner's token list + mapping(uint256 => uint256) tokenToOwnerIndex; + mapping(address => mapping(address => bool)) ownerToOperators; + // Mapping from tokenId to the block number of the ownership change + mapping(uint256 => uint256) ownershipChange; + mapping(uint256 => MappedStakeRecord) tokenToStakeRecord; + uint256 tokenCount; + } + function getStakingStorage() internal pure @@ -443,4 +467,15 @@ library LibStakingStorage { storageStruct.slot := position } } + + function getNFTStorage() + internal + pure + returns (NFTStorage storage storageStruct) + { + bytes32 position = NFT_STORAGE_POSITION; + assembly { + storageStruct.slot := position + } + } } diff --git a/blockchain/contracts/contracts/lit-node/Staking/StakingAdminFacet.sol b/blockchain/contracts/contracts/lit-node/Staking/StakingAdminFacet.sol index 759d14d..21b931b 100644 --- a/blockchain/contracts/contracts/lit-node/Staking/StakingAdminFacet.sol +++ b/blockchain/contracts/contracts/lit-node/Staking/StakingAdminFacet.sol @@ -11,6 +11,7 @@ import { LibStakingStorage } from "./LibStakingStorage.sol"; import { StakingCommon } from "./StakingCommon.sol"; import { SafeERC20 } from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol"; import { IERC20 } from "@openzeppelin/contracts/token/ERC20/IERC20.sol"; +import { LibStakingNFT } from "./LibStakingNFT.sol"; import "hardhat/console.sol"; contract StakingAdminFacet is StakingCommon { @@ -461,15 +462,17 @@ contract StakingAdminFacet is StakingCommon { StakingUtilsLib.checkStakeParameters(isSelfStake, timeLock); StakingUtilsLib.checkStakeAmountMinMax(amount, isSelfStake); + uint256 newTokenId = LibStakingNFT.addNewTokenTo(userStakerAddress); _createStakeRecord( amount, timeLock, operatorStakerAddress, userStakerAddress, - CreateStakeRecordOpts({ + StakingUtilsLib.CreateStakeRecordOpts({ targetCurrentRewardEpoch: false, lastRewardEpochClaimedToSet: 0, // setting this to zero relies in the inner function to determine what this value should be - unfreezeStartToSet: 0 + unfreezeStartToSet: 0, + tokenIdToSet: newTokenId }) ); diff --git a/blockchain/contracts/contracts/lit-node/Staking/StakingCommon.sol b/blockchain/contracts/contracts/lit-node/Staking/StakingCommon.sol index 62cc001..c12ea6b 100644 --- a/blockchain/contracts/contracts/lit-node/Staking/StakingCommon.sol +++ b/blockchain/contracts/contracts/lit-node/Staking/StakingCommon.sol @@ -13,13 +13,13 @@ import { console } from "lib/forge-std/src/console.sol"; import { EnumerableSet } from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"; import { EnumerableSetViewFriendly } from "@lit-protocol/openzeppelin-contracts/utils/structs/EnumerableSetViewFriendly.sol"; import { LibPubkeyRouterStorage } from "../PubkeyRouter/LibPubkeyRouterStorage.sol"; +import { LibStakingNFT } from "./LibStakingNFT.sol"; contract StakingCommon is ReentrancyGuard { using EnumerableSet for EnumerableSet.UintSet; using EnumerableSetViewFriendly for EnumerableSetViewFriendly.AddressSet; /* ========== ERRORS ========== */ - error NoEmptyStakingSlot(); error CannotModifyUnfrozen(); /* ========== VIEWS ========== */ @@ -79,165 +79,6 @@ contract StakingCommon is ReentrancyGuard { emit Staked(account, amount); } - struct CreateStakeRecordOpts { - /// @notice Whether to (forcibly) target the current reward epoch. This is sometimes necessary - /// for flows such as migrating stake, increasing stake record amount / timelock etc. - bool targetCurrentRewardEpoch; - /// @notice The last reward epoch claimed to set for the new stake record. If this is set to 0, - /// it means that the caller is relying on this function to determine the correct value to be set accordingly. - uint256 lastRewardEpochClaimedToSet; - /// @notice The start time of the unfreezing process. If this is non-zero, this means that this stake record - /// is created in order to resume the unfreezing process from a previously removed stake record, eg. for flows - /// such as migrating an already unfreezing stake record to a new validator. - uint256 unfreezeStartToSet; - } - - /** - * @notice Create stake record in staker vault - * @param stakeAmount The stake amount - * @param timeLock The stake time lock in seconds - * @param userStakerAddress The staker address - * @param stakerAddress address of the main staker for the node - * @param opts The options for the new stake record - * @dev Reverts if there is no empty staking slot - */ - function _createStakeRecord( - uint256 stakeAmount, - uint256 timeLock, - address stakerAddress, - address userStakerAddress, - CreateStakeRecordOpts memory opts - ) internal { - LibStakingStorage.StakerVault storage userVault = s().vaults[ - stakerAddress - ][userStakerAddress]; - uint256 freeSlotIndex = 2 ** 256 - 1; // max uint - for (uint256 i = 0; i < userVault.stakes.length; i++) { - if (!userVault.stakes[i].loaded) { - freeSlotIndex = i; - break; - } - } - if (freeSlotIndex == 2 ** 256 - 1) { - revert NoEmptyStakingSlot(); - } - - timeLock = timeLock > s().globalConfig[0].maxTimeLock - ? s().globalConfig[0].maxTimeLock - : timeLock; - // Round down to the nearest day - timeLock = (timeLock / 1 days) * 1 days; - - userVault.lastStakeRecordId += 1; - LibStakingStorage.StakeRecord memory stakeRecord = LibStakingStorage - .StakeRecord({ - id: userVault.lastStakeRecordId, - amount: stakeAmount, - unfreezeStart: opts.unfreezeStartToSet, - timeLock: timeLock, - lastUpdateTimestamp: block.timestamp, - lastRewardEpochClaimed: opts.lastRewardEpochClaimedToSet, - loaded: true, - frozen: opts.unfreezeStartToSet == 0, - // This is fine to always be set to PRECISION. The validator share price only ever decreases - // when a validator gets slashed, however, when a validator gets slashed, they are perma-banned - // from joining any realm / validator set, and pretty much the only way for that validator to - // re-join any realm is via admin intervention by reducing their demerit counters. When this - // validator proceeds to re-join a realm, their slate is "wiped clean" and they should have a - // validator share price reset to PRECISION initially. Hence, there is no need to set this - // initialSharePrice to anything else other than PRECISION always. - initialSharePrice: StakingUtilsLib.PRECISION, - attributionAddress: address(0) - }); - - // There is actually a bit of a hack we can use to calculate the stake weight to add to - // the validator's buffer without knowing exactly which reward epoch number will be used - // in the future (this is preferred for simplicity). Within StakingViewsFacet.getTimelockInEpoch, - // the purpose of needing the reward epoch number is to compare `RewardEpoch.epochEnd` with - // `StakeRecord.unfreezeStart`. However, since this is an entirely new stake record, the timelock we should - // be using is simply the timelock that we have here. Similarly, in StakingViewsFacet.getTokensStaked, the - // purpose of needing the reward epoch number is to get the `RewardEpoch.validatorSharePrice`. Since all non-slashed-and-active, - // joining, or yet-to-join validators will always have the initialized (not penalized) validator share price (at 1 ether), the - // stake amount we should be using is simply the stake amount that we have here. This means that the stake weight calculation - // can be done directly using `StakingViewsFacet.calculateStakeWeight`. - uint256 stakeWeight = views().calculateStakeWeight( - timeLock, - stakeAmount - ); - - // If validator is in current or next set, then we already know the next reward epoch which - // will need to be updated, so we proceed to update right away. - // If validator is not in current or next set, then we should update GS and RE once we know which - // realmId the validator is joining, which we should be able to do conveniently inside the - // requestToJoin (or related) functions. - uint256 realmId = realms().getRealmIdForStakerAddress(stakerAddress); - if (realmId != 0) { - uint256 rewardEpochNumberToUpdate; - if (opts.targetCurrentRewardEpoch) { - rewardEpochNumberToUpdate = mutableEpoch(realmId) - .rewardEpochNumber; - } else { - rewardEpochNumberToUpdate = mutableEpoch(realmId) - .nextRewardEpochNumber; - } - - LibStakingStorage.RewardEpoch storage rewardEpoch = StakingUtilsLib - ._getRewardEpoch(stakerAddress, rewardEpochNumberToUpdate); - - // If lastRewardEpochClaimedToSet is set to 0, we need to be setting the lastRewardEpochClaimed - // to be (rewardEpochNumberToUpdate - 1) - if (opts.lastRewardEpochClaimedToSet == 0) { - stakeRecord.lastRewardEpochClaimed = - rewardEpochNumberToUpdate - - 1; - } - - userVault.stakes[freeSlotIndex] = (stakeRecord); - - LibStakingStorage.RewardEpochGlobalStats storage globalStats = s() - .rewardEpochsGlobalStats[rewardEpochNumberToUpdate]; - globalStats.stakeWeight += stakeWeight; - globalStats.stakeAmount += stakeAmount; - - rewardEpoch.totalStakeWeight += stakeWeight; - rewardEpoch.stakeAmount += stakeAmount; - } else { - // If lastRewardEpochClaimedToSet is set to 0, we need to be setting the lastRewardEpochClaimed to be the - // lowest reward epoch number across all realms. Why does this work? Well, if we are here, it means that the validator - // is not yet part of any realm, and since reward epoch numbers are monotonically increasing across all realms, setting - // the lastRewardEpochClaimed to the currently lowest reward epoch number across all realms will ensure that this value - // is high enough to prevent the validator (or any of its delegated stakes) from being able to illegally double-claim - // rewards for historical epochs, and be low enough to ensure that the validator will be able to earn rewards as soon as - // they join any realm in the future. Note that we do not have to make the reward epoch number have exactly correct semantics - // here (validator ultimately joins a realm at epoch X so this parameter must be set to X-1), and setting the value this way - // allows us to keep the logic sufficiently simple while achieving the same desired outcome. - // Note that this assumes that the epoch progression is not delayed and always advances as expected (or in a timely manner). If - // this is not the case, then there is a possibility that this parameter is not set high enough and the staker is still able to - // claim rewards for historical epochs more than once. - if (opts.lastRewardEpochClaimedToSet == 0) { - (, stakeRecord.lastRewardEpochClaimed) = views() - .getLowestRewardEpochNumber(); - } - } - - // Handle delegated stakes - if (userStakerAddress != stakerAddress) { - // We need to attribute the stake amount and weight to the validator's struct. - stakeRecord.attributionAddress = stakerAddress; - s().validators[stakerAddress].delegatedStakeAmount += stakeAmount; - s().validators[stakerAddress].delegatedStakeWeight += stakeWeight; - } - - userVault.stakes[freeSlotIndex] = (stakeRecord); - - emit StakeRecordCreated( - stakerAddress, - stakeRecord.id, - stakeAmount, - userStakerAddress - ); - } - /** * Unfreeze stake and start to decrease the stake weight * @param userStakerAddress address of the staker who has this record @@ -358,12 +199,30 @@ contract StakingCommon is ReentrancyGuard { } } + function _createStakeRecord( + uint256 stakeAmount, + uint256 timeLock, + address stakerAddress, + address userStakerAddress, + StakingUtilsLib.CreateStakeRecordOpts memory opts + ) internal returns (uint256) { + uint256 newStakeRecordId = StakingUtilsLib._createStakeRecord( + stakeAmount, + timeLock, + stakerAddress, + userStakerAddress, + opts + ); + + LibStakingNFT.updateTokenToStakeRecord( + opts.tokenIdToSet, + stakerAddress, + newStakeRecordId + ); + + return newStakeRecordId; + } + // EVENTS event Staked(address indexed staker, uint256 amount); - event StakeRecordCreated( - address stakerAddress, - uint256 recordId, - uint256 amount, - address stakerAddressClient - ); } diff --git a/blockchain/contracts/contracts/lit-node/Staking/StakingFacet.sol b/blockchain/contracts/contracts/lit-node/Staking/StakingFacet.sol index 2702ded..14b28c7 100644 --- a/blockchain/contracts/contracts/lit-node/Staking/StakingFacet.sol +++ b/blockchain/contracts/contracts/lit-node/Staking/StakingFacet.sol @@ -13,6 +13,8 @@ import { ERC2771 } from "../../common/ERC2771.sol"; import { LibERC2771 } from "../../libraries/LibERC2771.sol"; import { EnumerableSetViewFriendly } from "@lit-protocol/openzeppelin-contracts/utils/structs/EnumerableSetViewFriendly.sol"; import { console } from "hardhat/console.sol"; +import { StakingNFTFacet } from "./StakingNFTFacet.sol"; +import { LibStakingNFT } from "./LibStakingNFT.sol"; contract StakingFacet is StakingCommon, ERC2771 { using EnumerableSet for EnumerableSet.AddressSet; @@ -70,15 +72,18 @@ contract StakingFacet is StakingCommon, ERC2771 { StakingUtilsLib.checkStakeAmountMinMax(amount, isSelfStake); _stake(amount, userStakerAddress); + // Logic to handle NFT aspects. + uint256 newTokenId = LibStakingNFT.addNewTokenTo(userStakerAddress); _createStakeRecord( amount, timeLock, operatorStakerAddress, userStakerAddress, - CreateStakeRecordOpts({ + StakingUtilsLib.CreateStakeRecordOpts({ targetCurrentRewardEpoch: false, lastRewardEpochClaimedToSet: 0, // setting this to zero relies in the inner function to determine what this value should be - unfreezeStartToSet: 0 + unfreezeStartToSet: 0, + tokenIdToSet: newTokenId }) ); @@ -545,7 +550,8 @@ contract StakingFacet is StakingCommon, ERC2771 { loaded: false, frozen: false, initialSharePrice: 0, - attributionAddress: address(0) + attributionAddress: address(0), + tokenId: 0 }); emit StakeRecordRemoved(params.stakerAddress, params.stakeRecordId); @@ -612,10 +618,11 @@ contract StakingFacet is StakingCommon, ERC2771 { newTimeLock, stakerAddress, LibERC2771._msgSender(), - CreateStakeRecordOpts({ + StakingUtilsLib.CreateStakeRecordOpts({ targetCurrentRewardEpoch: true, lastRewardEpochClaimedToSet: stakeRecord.lastRewardEpochClaimed, - unfreezeStartToSet: 0 + unfreezeStartToSet: 0, + tokenIdToSet: stakeRecord.tokenId }) ); } @@ -674,10 +681,11 @@ contract StakingFacet is StakingCommon, ERC2771 { timeLock, stakerAddress, LibERC2771._msgSender(), - CreateStakeRecordOpts({ + StakingUtilsLib.CreateStakeRecordOpts({ targetCurrentRewardEpoch: true, lastRewardEpochClaimedToSet: stakeRecord.lastRewardEpochClaimed, - unfreezeStartToSet: 0 + unfreezeStartToSet: 0, + tokenIdToSet: stakeRecord.tokenId }) ); } @@ -979,10 +987,11 @@ contract StakingFacet is StakingCommon, ERC2771 { stakeRecord.timeLock, operatorAddressToMigrateTo, LibERC2771._msgSender(), - CreateStakeRecordOpts({ + StakingUtilsLib.CreateStakeRecordOpts({ targetCurrentRewardEpoch: true, lastRewardEpochClaimedToSet: stakeRecord.lastRewardEpochClaimed, - unfreezeStartToSet: stakeRecord.unfreezeStart + unfreezeStartToSet: stakeRecord.unfreezeStart, + tokenIdToSet: stakeRecord.tokenId }) ); @@ -1092,7 +1101,7 @@ contract StakingFacet is StakingCommon, ERC2771 { } } if (!hasEmptySlot) { - revert NoEmptyStakingSlot(); + revert StakingUtilsLib.NoEmptyStakingSlot(); } uint256 newTimeLock = stakeRecord.timeLock; uint256 amountLeft = removeStakeRecord( @@ -1117,21 +1126,27 @@ contract StakingFacet is StakingCommon, ERC2771 { newTimeLock, stakerAddress, LibERC2771._msgSender(), - CreateStakeRecordOpts({ + StakingUtilsLib.CreateStakeRecordOpts({ targetCurrentRewardEpoch: true, lastRewardEpochClaimedToSet: stakeRecord.lastRewardEpochClaimed, - unfreezeStartToSet: 0 + unfreezeStartToSet: 0, + // The first split stake record will have the same tokenId as the original stake record. + tokenIdToSet: stakeRecord.tokenId }) ); + + // The second split stake record will have a new tokenId. + uint256 newTokenId = LibStakingNFT.addNewTokenTo(stakerAddress); _createStakeRecord( secondAmountSplit, newTimeLock, stakerAddress, LibERC2771._msgSender(), - CreateStakeRecordOpts({ + StakingUtilsLib.CreateStakeRecordOpts({ targetCurrentRewardEpoch: true, lastRewardEpochClaimedToSet: stakeRecord.lastRewardEpochClaimed, - unfreezeStartToSet: 0 + unfreezeStartToSet: 0, + tokenIdToSet: newTokenId }) ); } @@ -1164,7 +1179,17 @@ contract StakingFacet is StakingCommon, ERC2771 { } } + // Get the tokenID before removing the stake record address userStakerAddress = LibERC2771._msgSender(); + LibStakingStorage.StakeRecord memory stakeRecordToRemove = views() + .getStakeRecord( + operatorStakerAddress, + stakeRecordId, + userStakerAddress + ); + uint256 tokenIdToRemove = stakeRecordToRemove.tokenId; + + // Remove the stake record uint256 withdrawAmount = removeStakeRecord( RemoveStakeRecordParams({ stakerAddress: operatorStakerAddress, @@ -1174,6 +1199,7 @@ contract StakingFacet is StakingCommon, ERC2771 { migrateToStakerAddress: address(0) }) ); + LibStakingNFT._removeTokenFrom(userStakerAddress, tokenIdToRemove); SafeERC20.safeTransfer( IERC20(views().getTokenContractAddress()), diff --git a/blockchain/contracts/contracts/lit-node/Staking/StakingNFTFacet.sol b/blockchain/contracts/contracts/lit-node/Staking/StakingNFTFacet.sol new file mode 100644 index 0000000..f27d9bc --- /dev/null +++ b/blockchain/contracts/contracts/lit-node/Staking/StakingNFTFacet.sol @@ -0,0 +1,228 @@ +//SPDX-License-Identifier: GPL-3.0-or-later +pragma solidity ^0.8.17; + +import { ERC2771 } from "../../common/ERC2771.sol"; +import { IERC721 } from "@openzeppelin/contracts/token/ERC721/IERC721.sol"; +import { IERC721Receiver } from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; +import { LibERC2771 } from "../../libraries/LibERC2771.sol"; +import { LibDiamond } from "../../libraries/LibDiamond.sol"; +import { LibStakingStorage } from "./LibStakingStorage.sol"; +import { StakingViewsFacet } from "./StakingViewsFacet.sol"; +import { LibStakingNFT } from "./LibStakingNFT.sol"; +import { EnumerableSet } from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"; +import { EnumerableSetViewFriendly } from "@lit-protocol/openzeppelin-contracts/utils/structs/EnumerableSetViewFriendly.sol"; + +contract StakingNFTFacet is ERC2771, IERC721 { + using EnumerableSet for EnumerableSet.AddressSet; + using EnumerableSetViewFriendly for EnumerableSetViewFriendly.AddressSet; + + error ERC721ReceiverRejectedTokens(); + error ERC721TransferToNonERC721ReceiverImplementer(); + error NotApprovedOrOwner(); + error NotOwner(); + error ZeroAddress(); + error SameAddress(); + + function s() internal pure returns (LibStakingStorage.NFTStorage storage) { + return LibStakingStorage.getNFTStorage(); + } + + function views() internal view returns (StakingViewsFacet) { + return StakingViewsFacet(address(this)); + } + + /* ========== ERC165: STANDARD FUNCTIONS ========== */ + function supportsInterface( + bytes4 interfaceID + ) external view returns (bool) { + return s().supportedInterfaces[interfaceID]; + } + + /* ========== ERC721: STANDARD FUNCTIONS ========== */ + function balanceOf(address owner) public view override returns (uint256) { + return s().ownerToTokenCount[owner]; + } + + function ownerOf(uint256 tokenId) public view override returns (address) { + return s().tokenToOwner[tokenId]; + } + + function safeTransferFrom( + address from, + address to, + uint256 tokenId, + bytes memory data + ) public override { + address sender = LibERC2771._msgSender(); + _transferFrom(from, to, tokenId, sender); + + if (_isContract(to)) { + // Throws if transfer destination is a contract which does not implement 'onERC721Received' + try + IERC721Receiver(to).onERC721Received( + sender, + from, + tokenId, + data + ) + returns (bytes4 response) { + if (response != IERC721Receiver(to).onERC721Received.selector) { + revert ERC721ReceiverRejectedTokens(); + } + } catch (bytes memory reason) { + if (reason.length == 0) { + revert ERC721TransferToNonERC721ReceiverImplementer(); + } else { + assembly { + revert(add(32, reason), mload(reason)) + } + } + } + } + } + + function safeTransferFrom( + address from, + address to, + uint256 tokenId + ) public override { + safeTransferFrom(from, to, tokenId, ""); + } + + function transferFrom( + address from, + address to, + uint256 tokenId + ) public override { + _transferFrom(from, to, tokenId, LibERC2771._msgSender()); + } + + function approve(address approved, uint256 tokenId) external { + address sender = LibERC2771._msgSender(); + address owner = ownerOf(tokenId); + // Throws if `tokenId` is not a valid NFT + if (owner == address(0)) revert ZeroAddress(); + // Throws if `approved` is the current owner + if (owner == approved) revert SameAddress(); + // Check requirements + bool senderIsOwner = (ownerOf(tokenId) == sender); + bool senderIsApprovedForAll = (s().ownerToOperators[owner])[sender]; + if (!senderIsOwner && !senderIsApprovedForAll) + revert NotApprovedOrOwner(); + // Set the approval + s().tokenToApprovals[tokenId] = approved; + emit Approval(owner, approved, tokenId); + } + + function setApprovalForAll(address operator, bool approved) external { + address sender = LibERC2771._msgSender(); + // Throws if `_operator` is the `msg.sender` + if (operator == sender) revert SameAddress(); + s().ownerToOperators[sender][operator] = approved; + emit ApprovalForAll(sender, operator, approved); + } + + /* ========== ERC721: UTILITY FUNCTIONS ========== */ + + function tokenOfOwnerByIndex( + address owner, + uint256 index + ) public view returns (uint256) { + return s().ownerToIndexToToken[owner][index]; + } + + function totalSupply() public view returns (uint256) { + return s().tokenCount; + } + + function getApproved(uint256 tokenId) external view returns (address) { + return s().tokenToApprovals[tokenId]; + } + + function isApprovedForAll( + address owner, + address operator + ) external view returns (bool) { + return s().ownerToOperators[owner][operator]; + } + + function ownershipChange(uint256 tokenId) external view returns (uint256) { + return s().ownershipChange[tokenId]; + } + + function tokenToStakeRecord( + uint256 tokenId + ) external view returns (LibStakingStorage.MappedStakeRecord memory) { + return s().tokenToStakeRecord[tokenId]; + } + + /* ========== INTERNAL FUNCTIONS ========== */ + + function _transferFrom( + address from, + address to, + uint256 tokenId, + address sender + ) internal { + // Check requirements + if (!_isApprovedOrOwner(sender, tokenId)) revert NotApprovedOrOwner(); + + // Throw if from is not the current owner + if (ownerOf(tokenId) != from) revert NotOwner(); + + // Check that to has empty stake record slots. + // First, get the underlying stake record details for this NFT. + LibStakingStorage.MappedStakeRecord memory mappedStakeRecord = s() + .tokenToStakeRecord[tokenId]; + // Then, use this information to check for available stake record slots for the to address. + assert( + views().getEmptyStakeRecordSlots( + to, + mappedStakeRecord.operatorStakerAddress + ) > 0 + ); + + // Clear approvals + delete s().tokenToApprovals[tokenId]; + + // Remove NFT. Throws if `tokenId` is not a valid NFT + LibStakingNFT._removeTokenFrom(from, tokenId); + + // Add NFT + LibStakingNFT._addTokenTo(to, tokenId); + // Set the block of ownership transfer (for Flash NFT protection) + s().ownershipChange[tokenId] = block.number; + // Log the transfer + emit Transfer(from, to, tokenId); + + // Update staking related data. + LibStakingNFT.handleNFTStakeRecordTransfer( + from, + to, + tokenId, + mappedStakeRecord + ); + } + + function _isContract(address account) internal view returns (bool) { + // This method relies on extcodesize, which returns 0 for contracts in + // construction, since the code is only stored at the end of the + // constructor execution. + uint256 size; + assembly { + size := extcodesize(account) + } + return size > 0; + } + + function _isApprovedOrOwner( + address spender, + uint256 tokenId + ) internal view returns (bool) { + address owner = ownerOf(tokenId); + bool spenderIsOwner = owner == spender; + bool spenderIsApproved = spender == s().tokenToApprovals[tokenId]; + bool spenderIsApprovedForAll = (s().ownerToOperators[owner])[spender]; + return spenderIsOwner || spenderIsApproved || spenderIsApprovedForAll; + } +} diff --git a/blockchain/contracts/contracts/lit-node/Staking/StakingUtilsLib.sol b/blockchain/contracts/contracts/lit-node/Staking/StakingUtilsLib.sol index 8d7bc63..7ba831a 100644 --- a/blockchain/contracts/contracts/lit-node/Staking/StakingUtilsLib.sol +++ b/blockchain/contracts/contracts/lit-node/Staking/StakingUtilsLib.sol @@ -38,6 +38,7 @@ library StakingUtilsLib { error InvalidSlashPercentage(); error CannotStakeZero(); error CannotMoveToLockedValidatorStateBeforeEpochEnds(); + error NoEmptyStakingSlot(); /* ========== VIEWS ========== */ @@ -863,6 +864,170 @@ library StakingUtilsLib { .delegatedStakeAmount; } + struct CreateStakeRecordOpts { + /// @notice Whether to (forcibly) target the current reward epoch. This is sometimes necessary + /// for flows such as migrating stake, increasing stake record amount / timelock etc. + bool targetCurrentRewardEpoch; + /// @notice The last reward epoch claimed to set for the new stake record. If this is set to 0, + /// it means that the caller is relying on this function to determine the correct value to be set accordingly. + uint256 lastRewardEpochClaimedToSet; + /// @notice The start time of the unfreezing process. If this is non-zero, this means that this stake record + /// is created in order to resume the unfreezing process from a previously removed stake record, eg. for flows + /// such as migrating an already unfreezing stake record to a new validator. + uint256 unfreezeStartToSet; + /// @notice The token ID of the NFT that the stake record is associated with. + uint256 tokenIdToSet; + } + + /** + * @notice Create stake record in staker vault + * @param stakeAmount The stake amount + * @param timeLock The stake time lock in seconds + * @param userStakerAddress The staker address + * @param stakerAddress address of the main staker for the node + * @param opts The options for the new stake record + * @dev Reverts if there is no empty staking slot + */ + function _createStakeRecord( + uint256 stakeAmount, + uint256 timeLock, + address stakerAddress, + address userStakerAddress, + CreateStakeRecordOpts memory opts + ) internal returns (uint256) { + LibStakingStorage.StakerVault storage userVault = s().vaults[ + stakerAddress + ][userStakerAddress]; + uint256 freeSlotIndex = 2 ** 256 - 1; // max uint + for (uint256 i = 0; i < userVault.stakes.length; i++) { + if (!userVault.stakes[i].loaded) { + freeSlotIndex = i; + break; + } + } + if (freeSlotIndex == 2 ** 256 - 1) { + revert NoEmptyStakingSlot(); + } + + timeLock = timeLock > s().globalConfig[0].maxTimeLock + ? s().globalConfig[0].maxTimeLock + : timeLock; + // Round down to the nearest day + timeLock = (timeLock / 1 days) * 1 days; + + userVault.lastStakeRecordId += 1; + LibStakingStorage.StakeRecord memory stakeRecord = LibStakingStorage + .StakeRecord({ + id: userVault.lastStakeRecordId, + amount: stakeAmount, + unfreezeStart: opts.unfreezeStartToSet, + timeLock: timeLock, + lastUpdateTimestamp: block.timestamp, + lastRewardEpochClaimed: opts.lastRewardEpochClaimedToSet, + loaded: true, + frozen: opts.unfreezeStartToSet == 0, + // This is fine to always be set to PRECISION. The validator share price only ever decreases + // when a validator gets slashed, however, when a validator gets slashed, they are perma-banned + // from joining any realm / validator set, and pretty much the only way for that validator to + // re-join any realm is via admin intervention by reducing their demerit counters. When this + // validator proceeds to re-join a realm, their slate is "wiped clean" and they should have a + // validator share price reset to PRECISION initially. Hence, there is no need to set this + // initialSharePrice to anything else other than PRECISION always. + initialSharePrice: StakingUtilsLib.PRECISION, + attributionAddress: address(0), + tokenId: opts.tokenIdToSet + }); + + // There is actually a bit of a hack we can use to calculate the stake weight to add to + // the validator's buffer without knowing exactly which reward epoch number will be used + // in the future (this is preferred for simplicity). Within StakingViewsFacet.getTimelockInEpoch, + // the purpose of needing the reward epoch number is to compare `RewardEpoch.epochEnd` with + // `StakeRecord.unfreezeStart`. However, since this is an entirely new stake record, the timelock we should + // be using is simply the timelock that we have here. Similarly, in StakingViewsFacet.getTokensStaked, the + // purpose of needing the reward epoch number is to get the `RewardEpoch.validatorSharePrice`. Since all non-slashed-and-active, + // joining, or yet-to-join validators will always have the initialized (not penalized) validator share price (at 1 ether), the + // stake amount we should be using is simply the stake amount that we have here. This means that the stake weight calculation + // can be done directly using `StakingViewsFacet.calculateStakeWeight`. + uint256 stakeWeight = views().calculateStakeWeight( + timeLock, + stakeAmount + ); + + // If validator is in current or next set, then we already know the next reward epoch which + // will need to be updated, so we proceed to update right away. + // If validator is not in current or next set, then we should update GS and RE once we know which + // realmId the validator is joining, which we should be able to do conveniently inside the + // requestToJoin (or related) functions. + uint256 realmId = realms().getRealmIdForStakerAddress(stakerAddress); + if (realmId != 0) { + uint256 rewardEpochNumberToUpdate; + if (opts.targetCurrentRewardEpoch) { + rewardEpochNumberToUpdate = mutableEpoch(realmId) + .rewardEpochNumber; + } else { + rewardEpochNumberToUpdate = mutableEpoch(realmId) + .nextRewardEpochNumber; + } + + LibStakingStorage.RewardEpoch storage rewardEpoch = StakingUtilsLib + ._getRewardEpoch(stakerAddress, rewardEpochNumberToUpdate); + + // If lastRewardEpochClaimedToSet is set to 0, we need to be setting the lastRewardEpochClaimed + // to be (rewardEpochNumberToUpdate - 1) + if (opts.lastRewardEpochClaimedToSet == 0) { + stakeRecord.lastRewardEpochClaimed = + rewardEpochNumberToUpdate - + 1; + } + + userVault.stakes[freeSlotIndex] = (stakeRecord); + + LibStakingStorage.RewardEpochGlobalStats storage globalStats = s() + .rewardEpochsGlobalStats[rewardEpochNumberToUpdate]; + globalStats.stakeWeight += stakeWeight; + globalStats.stakeAmount += stakeAmount; + + rewardEpoch.totalStakeWeight += stakeWeight; + rewardEpoch.stakeAmount += stakeAmount; + } else { + // If lastRewardEpochClaimedToSet is set to 0, we need to be setting the lastRewardEpochClaimed to be the + // lowest reward epoch number across all realms. Why does this work? Well, if we are here, it means that the validator + // is not yet part of any realm, and since reward epoch numbers are monotonically increasing across all realms, setting + // the lastRewardEpochClaimed to the currently lowest reward epoch number across all realms will ensure that this value + // is high enough to prevent the validator (or any of its delegated stakes) from being able to illegally double-claim + // rewards for historical epochs, and be low enough to ensure that the validator will be able to earn rewards as soon as + // they join any realm in the future. Note that we do not have to make the reward epoch number have exactly correct semantics + // here (validator ultimately joins a realm at epoch X so this parameter must be set to X-1), and setting the value this way + // allows us to keep the logic sufficiently simple while achieving the same desired outcome. + // Note that this assumes that the epoch progression is not delayed and always advances as expected (or in a timely manner). If + // this is not the case, then there is a possibility that this parameter is not set high enough and the staker is still able to + // claim rewards for historical epochs more than once. + if (opts.lastRewardEpochClaimedToSet == 0) { + (, stakeRecord.lastRewardEpochClaimed) = views() + .getLowestRewardEpochNumber(); + } + } + + // Handle delegated stakes + if (userStakerAddress != stakerAddress) { + // We need to attribute the stake amount and weight to the validator's struct. + stakeRecord.attributionAddress = stakerAddress; + s().validators[stakerAddress].delegatedStakeAmount += stakeAmount; + s().validators[stakerAddress].delegatedStakeWeight += stakeWeight; + } + + userVault.stakes[freeSlotIndex] = (stakeRecord); + + emit StakeRecordCreated( + stakerAddress, + stakeRecord.id, + stakeAmount, + userStakerAddress + ); + + return stakeRecord.id; + } + /// @notice Checks that the stake amount is within the min and max stake amounts /// @param amount The amount to check /// @param isSelfStake Whether the stake is a self-stake @@ -921,4 +1086,10 @@ library StakingUtilsLib { event StateChanged(LibStakingStorage.States newState); event ValidatorKickedFromNextEpoch(address indexed staker); event ValidatorBanned(address indexed staker); + event StakeRecordCreated( + address stakerAddress, + uint256 recordId, + uint256 amount, + address stakerAddressClient + ); } diff --git a/blockchain/contracts/contracts/lit-node/Staking/StakingViewsFacet.sol b/blockchain/contracts/contracts/lit-node/Staking/StakingViewsFacet.sol index 5febf11..9b9a52f 100644 --- a/blockchain/contracts/contracts/lit-node/Staking/StakingViewsFacet.sol +++ b/blockchain/contracts/contracts/lit-node/Staking/StakingViewsFacet.sol @@ -534,6 +534,23 @@ contract StakingViewsFacet { return count; } + function getEmptyStakeRecordSlots( + address userStakerAddress, + address operatorStakerAddress + ) public view returns (uint256) { + LibStakingStorage.StakerVault memory vault = s().vaults[ + operatorStakerAddress + ][userStakerAddress]; + + uint256 count; + for (uint i = 0; i < vault.stakes.length; i++) { + if (!vault.stakes[i].loaded) { + count += 1; + } + } + return count; + } + function getUnfrozenStakeCountForUser( address userStakerAddress, address operatorStakerAddress From 5f600f541d45faeeacab0454a4e169db3926c477 Mon Sep 17 00:00:00 2001 From: Howard Tam Date: Fri, 28 Nov 2025 19:36:08 -0800 Subject: [PATCH 03/18] Rename stake balanceOf We need to reeserve the balanceOf(address) for StakingNFTFacet. --- .../lit-node/Staking/StakingFacet.sol | 4 +++- blockchain/contracts/test/lit-node/Staking.js | 24 ++++++++++++------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/blockchain/contracts/contracts/lit-node/Staking/StakingFacet.sol b/blockchain/contracts/contracts/lit-node/Staking/StakingFacet.sol index 14b28c7..13c9ff1 100644 --- a/blockchain/contracts/contracts/lit-node/Staking/StakingFacet.sol +++ b/blockchain/contracts/contracts/lit-node/Staking/StakingFacet.sol @@ -1273,7 +1273,9 @@ contract StakingFacet is StakingCommon, ERC2771 { return true; } - function balanceOf(address stakerAddress) external view returns (uint256) { + function stakeBalanceOf( + address stakerAddress + ) external view returns (uint256) { LibStakingStorage.StakeRecord[] memory stakeRecords = views() .getStakeRecordsForUser(stakerAddress, stakerAddress); uint256 totalStake = 0; diff --git a/blockchain/contracts/test/lit-node/Staking.js b/blockchain/contracts/test/lit-node/Staking.js index 507b32a..4d2b992 100644 --- a/blockchain/contracts/test/lit-node/Staking.js +++ b/blockchain/contracts/test/lit-node/Staking.js @@ -241,7 +241,7 @@ describe('Staking', function () { const ipAddress = ip2int(stakingAccount1IpAddress); for (let i = 0; i < validatorsStructs.length; i++) { const validator = validatorsStructs[i]; - const balance = await stakingFacet.balanceOf( + const balance = await stakingFacet.stakeBalanceOf( validatorStakingAddresses[i] ); expect(validator.nodeAddress).equal( @@ -270,7 +270,7 @@ describe('Staking', function () { expect(validators.length).equal(10); for (let i = 0; i < validators.length; i++) { const validator = validators[i]; - const balance = await stakingFacet.balanceOf( + const balance = await stakingFacet.stakeBalanceOf( validatorStakingAddresses[i] ); expect(validator.nodeAddress).equal( @@ -308,7 +308,7 @@ describe('Staking', function () { describe('validator joining', function () { it('can join as a validator, and cannot leave as a staker if below min validator count', async () => { - let initialStakeBal = await stakingFacet.balanceOf( + let initialStakeBal = await stakingFacet.stakeBalanceOf( stakingAccount1.address ); let initialTokenBalance = await token.balanceOf(stakingAccount1.address); @@ -367,7 +367,9 @@ describe('Staking', function () { stakingValidatorFacet = stakingValidatorFacet.connect(stakingAccount1); await stakingValidatorFacet.requestToJoin(realmId); - let postStakeBal = await stakingFacet.balanceOf(stakingAccount1.address); + let postStakeBal = await stakingFacet.stakeBalanceOf( + stakingAccount1.address + ); let postTokenBalance = await token.balanceOf(stakingAccount1.address); let postValidatorEntry = await stakingViewsFacet.validators( stakingAccount1.address @@ -377,7 +379,9 @@ describe('Staking', function () { const postNodeAddress = postValidatorEntry.nodeAddress; const postSenderPubKey = postValidatorEntry.senderPubKey; const postReceiverPubKey = postValidatorEntry.receiverPubKey; - let postBalance = await stakingFacet.balanceOf(stakingAccount1.address); + let postBalance = await stakingFacet.stakeBalanceOf( + stakingAccount1.address + ); let postReward = postValidatorEntry.reward; let postNodeAddressToStakerAddress = await stakingViewsFacet.nodeAddressToStakerAddress( @@ -426,12 +430,14 @@ describe('Staking', function () { token = token.connect(stakingAccount1); stakingValidatorFacet = stakingValidatorFacet.connect(stakingAccount1); - initialStakeBal = await stakingFacet.balanceOf(stakingAccount1.address); + initialStakeBal = await stakingFacet.stakeBalanceOf( + stakingAccount1.address + ); initialTokenBalance = await token.balanceOf(stakingAccount1.address); initialValidatorEntry = await stakingViewsFacet.validators( stakingAccount1.address ); - const initialBalance = await stakingFacet.balanceOf( + const initialBalance = await stakingFacet.stakeBalanceOf( stakingAccount1.address ); initialReward = initialValidatorEntry.reward; @@ -450,13 +456,13 @@ describe('Staking', function () { 7n ); - postStakeBal = await stakingFacet.balanceOf(stakingAccount1.address); + postStakeBal = await stakingFacet.stakeBalanceOf(stakingAccount1.address); postTokenBalance = await token.balanceOf(stakingAccount1.address); postValidatorEntry = await stakingViewsFacet.validators( stakingAccount1.address ); - postBalance = await stakingFacet.balanceOf(stakingAccount1.address); + postBalance = await stakingFacet.stakeBalanceOf(stakingAccount1.address); postReward = postValidatorEntry.reward; postNodeAddressToStakerAddress = await stakingViewsFacet.nodeAddressToStakerAddress( From 9d499dc22d88602631c9b3f2ce36cfe87e3f3e11 Mon Sep 17 00:00:00 2001 From: Howard Tam Date: Fri, 28 Nov 2025 20:21:44 -0800 Subject: [PATCH 04/18] Fix tests after renaming balanceOf --- .../contracts/lit-node/Staking/FunctionSelectorHelper.t.sol | 2 +- blockchain/contracts/contracts/lit-node/Staking/Staking.t.sol | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/blockchain/contracts/contracts/lit-node/Staking/FunctionSelectorHelper.t.sol b/blockchain/contracts/contracts/lit-node/Staking/FunctionSelectorHelper.t.sol index cc4ecfa..ef89f5c 100644 --- a/blockchain/contracts/contracts/lit-node/Staking/FunctionSelectorHelper.t.sol +++ b/blockchain/contracts/contracts/lit-node/Staking/FunctionSelectorHelper.t.sol @@ -30,7 +30,7 @@ contract FunctionSelectorHelper { // View functions that are either public or external. These are included here not // for invariant testing, but for interacting via the Handler-based invariant tests. - functionSignatures[14] = "balanceOf(address)"; + functionSignatures[14] = "stakeBalanceOf(address)"; functionSignatures[15] = "getMinimumStake()"; functionSignatures[16] = "getMinimumSelfStake()"; functionSignatures[17] = "getMaximumStake()"; diff --git a/blockchain/contracts/contracts/lit-node/Staking/Staking.t.sol b/blockchain/contracts/contracts/lit-node/Staking/Staking.t.sol index d8c3f5f..847a647 100644 --- a/blockchain/contracts/contracts/lit-node/Staking/Staking.t.sol +++ b/blockchain/contracts/contracts/lit-node/Staking/Staking.t.sol @@ -6655,7 +6655,9 @@ contract StakingTest is Test, SetupAndUtils { { // Delegated staker claims their rewards - uint256 balanceBefore = stakingFacet.balanceOf(delegatingStaker); + uint256 balanceBefore = stakingFacet.stakeBalanceOf( + delegatingStaker + ); vm.prank(delegatingStaker); stakingFacet.claimStakeRewards( From 92583458c359e69a9c4cf849a695d9a7f15dd594 Mon Sep 17 00:00:00 2001 From: Howard Tam Date: Fri, 28 Nov 2025 20:22:31 -0800 Subject: [PATCH 05/18] Fix wagmi build --- .../contracts/interfaces/IERC721.sol | 159 ++++++++++++++++++ .../contracts/contracts/lit-node/Staking.sol | 1 - .../lit-node/Staking/StakingNFTFacet.sol | 12 +- 3 files changed, 161 insertions(+), 11 deletions(-) create mode 100644 blockchain/contracts/contracts/interfaces/IERC721.sol diff --git a/blockchain/contracts/contracts/interfaces/IERC721.sol b/blockchain/contracts/contracts/interfaces/IERC721.sol new file mode 100644 index 0000000..0c2a3b4 --- /dev/null +++ b/blockchain/contracts/contracts/interfaces/IERC721.sol @@ -0,0 +1,159 @@ +// SPDX-License-Identifier: MIT +// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC721/IERC721.sol) + +pragma solidity ^0.8.0; + +/** + * @dev Required interface of an ERC721 compliant contract. + * @dev This is an exact copy of the OpenZeppelin IERC721 interface EXCEPT for the supportsInterface function + * because diamond contracts already implement this via the DiamondLoupeFacet and this breaks some tools' + * ability to compile, for example WAGMI with `npx wagmi generate`. + */ +interface IERC721 { + /** + * @dev Emitted when `tokenId` token is transferred from `from` to `to`. + */ + event Transfer( + address indexed from, + address indexed to, + uint256 indexed tokenId + ); + + /** + * @dev Emitted when `owner` enables `approved` to manage the `tokenId` token. + */ + event Approval( + address indexed owner, + address indexed approved, + uint256 indexed tokenId + ); + + /** + * @dev Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets. + */ + event ApprovalForAll( + address indexed owner, + address indexed operator, + bool approved + ); + + /** + * @dev Returns the number of tokens in ``owner``'s account. + */ + function balanceOf(address owner) external view returns (uint256 balance); + + /** + * @dev Returns the owner of the `tokenId` token. + * + * Requirements: + * + * - `tokenId` must exist. + */ + function ownerOf(uint256 tokenId) external view returns (address owner); + + /** + * @dev Safely transfers `tokenId` token from `from` to `to`. + * + * Requirements: + * + * - `from` cannot be the zero address. + * - `to` cannot be the zero address. + * - `tokenId` token must exist and be owned by `from`. + * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. + * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. + * + * Emits a {Transfer} event. + */ + function safeTransferFrom( + address from, + address to, + uint256 tokenId, + bytes calldata data + ) external; + + /** + * @dev Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients + * are aware of the ERC721 protocol to prevent tokens from being forever locked. + * + * Requirements: + * + * - `from` cannot be the zero address. + * - `to` cannot be the zero address. + * - `tokenId` token must exist and be owned by `from`. + * - If the caller is not `from`, it must have been allowed to move this token by either {approve} or {setApprovalForAll}. + * - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon a safe transfer. + * + * Emits a {Transfer} event. + */ + function safeTransferFrom( + address from, + address to, + uint256 tokenId + ) external; + + /** + * @dev Transfers `tokenId` token from `from` to `to`. + * + * WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 + * or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must + * understand this adds an external call which potentially creates a reentrancy vulnerability. + * + * Requirements: + * + * - `from` cannot be the zero address. + * - `to` cannot be the zero address. + * - `tokenId` token must be owned by `from`. + * - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. + * + * Emits a {Transfer} event. + */ + function transferFrom(address from, address to, uint256 tokenId) external; + + /** + * @dev Gives permission to `to` to transfer `tokenId` token to another account. + * The approval is cleared when the token is transferred. + * + * Only a single account can be approved at a time, so approving the zero address clears previous approvals. + * + * Requirements: + * + * - The caller must own the token or be an approved operator. + * - `tokenId` must exist. + * + * Emits an {Approval} event. + */ + function approve(address to, uint256 tokenId) external; + + /** + * @dev Approve or remove `operator` as an operator for the caller. + * Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. + * + * Requirements: + * + * - The `operator` cannot be the caller. + * + * Emits an {ApprovalForAll} event. + */ + function setApprovalForAll(address operator, bool approved) external; + + /** + * @dev Returns the account approved for `tokenId` token. + * + * Requirements: + * + * - `tokenId` must exist. + */ + function getApproved( + uint256 tokenId + ) external view returns (address operator); + + /** + * @dev Returns if the `operator` is allowed to manage all of the assets of `owner`. + * + * See {setApprovalForAll} + */ + function isApprovedForAll( + address owner, + address operator + ) external view returns (bool); +} diff --git a/blockchain/contracts/contracts/lit-node/Staking.sol b/blockchain/contracts/contracts/lit-node/Staking.sol index 94e9d9e..51f8500 100644 --- a/blockchain/contracts/contracts/lit-node/Staking.sol +++ b/blockchain/contracts/contracts/lit-node/Staking.sol @@ -12,7 +12,6 @@ import { LibDiamond } from "../libraries/LibDiamond.sol"; import { IDiamondCut } from "../interfaces/IDiamondCut.sol"; import { IDiamondLoupe } from "../interfaces/IDiamondLoupe.sol"; import { IERC173 } from "../interfaces/IERC173.sol"; -import { IERC165 } from "../interfaces/IERC165.sol"; import { ContractResolver } from "../lit-core/ContractResolver.sol"; import { LibStakingStorage } from "./Staking/LibStakingStorage.sol"; diff --git a/blockchain/contracts/contracts/lit-node/Staking/StakingNFTFacet.sol b/blockchain/contracts/contracts/lit-node/Staking/StakingNFTFacet.sol index f27d9bc..61f0505 100644 --- a/blockchain/contracts/contracts/lit-node/Staking/StakingNFTFacet.sol +++ b/blockchain/contracts/contracts/lit-node/Staking/StakingNFTFacet.sol @@ -1,8 +1,7 @@ //SPDX-License-Identifier: GPL-3.0-or-later pragma solidity ^0.8.17; -import { ERC2771 } from "../../common/ERC2771.sol"; -import { IERC721 } from "@openzeppelin/contracts/token/ERC721/IERC721.sol"; +import { IERC721 } from "../../interfaces/IERC721.sol"; import { IERC721Receiver } from "@openzeppelin/contracts/token/ERC721/IERC721Receiver.sol"; import { LibERC2771 } from "../../libraries/LibERC2771.sol"; import { LibDiamond } from "../../libraries/LibDiamond.sol"; @@ -12,7 +11,7 @@ import { LibStakingNFT } from "./LibStakingNFT.sol"; import { EnumerableSet } from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol"; import { EnumerableSetViewFriendly } from "@lit-protocol/openzeppelin-contracts/utils/structs/EnumerableSetViewFriendly.sol"; -contract StakingNFTFacet is ERC2771, IERC721 { +contract StakingNFTFacet is IERC721 { using EnumerableSet for EnumerableSet.AddressSet; using EnumerableSetViewFriendly for EnumerableSetViewFriendly.AddressSet; @@ -31,13 +30,6 @@ contract StakingNFTFacet is ERC2771, IERC721 { return StakingViewsFacet(address(this)); } - /* ========== ERC165: STANDARD FUNCTIONS ========== */ - function supportsInterface( - bytes4 interfaceID - ) external view returns (bool) { - return s().supportedInterfaces[interfaceID]; - } - /* ========== ERC721: STANDARD FUNCTIONS ========== */ function balanceOf(address owner) public view override returns (uint256) { return s().ownerToTokenCount[owner]; From 118905c2e6cf89457d66f454de01a62d34962d63 Mon Sep 17 00:00:00 2001 From: Howard Tam Date: Fri, 28 Nov 2025 20:22:49 -0800 Subject: [PATCH 06/18] wagmi generate --- blockchain/contracts/abis/generated.ts | 2103 ++++++++++++++++++++---- 1 file changed, 1814 insertions(+), 289 deletions(-) diff --git a/blockchain/contracts/abis/generated.ts b/blockchain/contracts/abis/generated.ts index a379b55..8f94f64 100644 --- a/blockchain/contracts/abis/generated.ts +++ b/blockchain/contracts/abis/generated.ts @@ -11183,6 +11183,90 @@ export const pkpnftDiamondAbi = [ outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }], stateMutability: 'view', }, + { + type: 'function', + inputs: [ + { name: 'ethAddresses', internalType: 'address[]', type: 'address[]' }, + ], + name: 'getPkpInfoFromEthAddresses', + outputs: [ + { + name: '', + internalType: 'struct LibPubkeyRouterStorage.PkpInfo[]', + type: 'tuple[]', + components: [ + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, + { name: 'pubkey', internalType: 'bytes', type: 'bytes' }, + { name: 'ethAddress', internalType: 'address', type: 'address' }, + ], + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: 'owner', internalType: 'address', type: 'address' }, + { name: 'pageSize', internalType: 'uint256', type: 'uint256' }, + { name: 'pageIndex', internalType: 'uint256', type: 'uint256' }, + ], + name: 'getPkpInfoFromOwnerAddress', + outputs: [ + { + name: '', + internalType: 'struct LibPubkeyRouterStorage.PkpInfo[]', + type: 'tuple[]', + components: [ + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, + { name: 'pubkey', internalType: 'bytes', type: 'bytes' }, + { name: 'ethAddress', internalType: 'address', type: 'address' }, + ], + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, + { name: 'pageSize', internalType: 'uint256', type: 'uint256' }, + { name: 'pageIndex', internalType: 'uint256', type: 'uint256' }, + ], + name: 'getPkpInfoFromOwnerTokenId', + outputs: [ + { + name: '', + internalType: 'struct LibPubkeyRouterStorage.PkpInfo[]', + type: 'tuple[]', + components: [ + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, + { name: 'pubkey', internalType: 'bytes', type: 'bytes' }, + { name: 'ethAddress', internalType: 'address', type: 'address' }, + ], + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: 'tokenIds', internalType: 'uint256[]', type: 'uint256[]' }, + ], + name: 'getPkpInfoFromTokenIds', + outputs: [ + { + name: '', + internalType: 'struct LibPubkeyRouterStorage.PkpInfo[]', + type: 'tuple[]', + components: [ + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, + { name: 'pubkey', internalType: 'bytes', type: 'bytes' }, + { name: 'ethAddress', internalType: 'address', type: 'address' }, + ], + }, + ], + stateMutability: 'view', + }, { type: 'function', inputs: [], @@ -11667,6 +11751,90 @@ export const pkpnftFacetAbi = [ outputs: [{ name: '', internalType: 'bytes32', type: 'bytes32' }], stateMutability: 'view', }, + { + type: 'function', + inputs: [ + { name: 'ethAddresses', internalType: 'address[]', type: 'address[]' }, + ], + name: 'getPkpInfoFromEthAddresses', + outputs: [ + { + name: '', + internalType: 'struct LibPubkeyRouterStorage.PkpInfo[]', + type: 'tuple[]', + components: [ + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, + { name: 'pubkey', internalType: 'bytes', type: 'bytes' }, + { name: 'ethAddress', internalType: 'address', type: 'address' }, + ], + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: 'owner', internalType: 'address', type: 'address' }, + { name: 'pageSize', internalType: 'uint256', type: 'uint256' }, + { name: 'pageIndex', internalType: 'uint256', type: 'uint256' }, + ], + name: 'getPkpInfoFromOwnerAddress', + outputs: [ + { + name: '', + internalType: 'struct LibPubkeyRouterStorage.PkpInfo[]', + type: 'tuple[]', + components: [ + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, + { name: 'pubkey', internalType: 'bytes', type: 'bytes' }, + { name: 'ethAddress', internalType: 'address', type: 'address' }, + ], + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, + { name: 'pageSize', internalType: 'uint256', type: 'uint256' }, + { name: 'pageIndex', internalType: 'uint256', type: 'uint256' }, + ], + name: 'getPkpInfoFromOwnerTokenId', + outputs: [ + { + name: '', + internalType: 'struct LibPubkeyRouterStorage.PkpInfo[]', + type: 'tuple[]', + components: [ + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, + { name: 'pubkey', internalType: 'bytes', type: 'bytes' }, + { name: 'ethAddress', internalType: 'address', type: 'address' }, + ], + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: 'tokenIds', internalType: 'uint256[]', type: 'uint256[]' }, + ], + name: 'getPkpInfoFromTokenIds', + outputs: [ + { + name: '', + internalType: 'struct LibPubkeyRouterStorage.PkpInfo[]', + type: 'tuple[]', + components: [ + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, + { name: 'pubkey', internalType: 'bytes', type: 'bytes' }, + { name: 'ethAddress', internalType: 'address', type: 'address' }, + ], + }, + ], + stateMutability: 'view', + }, { type: 'function', inputs: [], @@ -15254,7 +15422,6 @@ export const priceFeedDiamondAbi = [ stateMutability: 'nonpayable', }, { type: 'error', inputs: [], name: 'CallerNotOwner' }, - { type: 'error', inputs: [], name: 'MustBeLessThan100' }, { type: 'error', inputs: [], name: 'MustBeNonzero' }, { type: 'event', @@ -15703,7 +15870,6 @@ export const priceFeedDiamondAbi = [ export const priceFeedFacetAbi = [ { type: 'error', inputs: [], name: 'CallerNotOwner' }, - { type: 'error', inputs: [], name: 'MustBeLessThan100' }, { type: 'error', inputs: [], name: 'MustBeNonzero' }, { type: 'event', @@ -16147,75 +16313,639 @@ export const priceFeedFacetAbi = [ ] as const; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// PubkeyRouter +// PriceFeedFunctionSelectorHelper ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// -export const pubkeyRouterAbi = [ +export const priceFeedFunctionSelectorHelperAbi = [ { - type: 'constructor', + type: 'function', + inputs: [], + name: 'getSelectorsPriceFeedFacet', + outputs: [{ name: '', internalType: 'bytes4[]', type: 'bytes4[]' }], + stateMutability: 'pure', + }, + { + type: 'function', + inputs: [], + name: 'getSignaturesPriceFeedFacet', + outputs: [{ name: '', internalType: 'string[]', type: 'string[]' }], + stateMutability: 'pure', + }, +] as const; + +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// PriceFeedTest +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +export const priceFeedTestAbi = [ + { + type: 'event', + anonymous: false, inputs: [ { - name: '_diamondCut', - internalType: 'struct IDiamond.FacetCut[]', - type: 'tuple[]', - components: [ - { name: 'facetAddress', internalType: 'address', type: 'address' }, - { - name: 'action', - internalType: 'enum IDiamond.FacetCutAction', - type: 'uint8', - }, - { - name: 'functionSelectors', - internalType: 'bytes4[]', - type: 'bytes4[]', - }, - ], - }, - { - name: '_args', - internalType: 'struct PubkeyRouterArgs', - type: 'tuple', - components: [ - { name: 'owner', internalType: 'address', type: 'address' }, - { name: 'init', internalType: 'address', type: 'address' }, - { name: 'initCalldata', internalType: 'bytes', type: 'bytes' }, - { - name: 'contractResolver', - internalType: 'address', - type: 'address', - }, - { - name: 'env', - internalType: 'enum ContractResolver.Env', - type: 'uint8', - }, - ], + name: 'validatorId', + internalType: 'uint256', + type: 'uint256', + indexed: true, }, ], - stateMutability: 'payable', + name: 'RequestToJoin', }, { - type: 'error', - inputs: [{ name: '_selector', internalType: 'bytes4', type: 'bytes4' }], - name: 'CannotAddFunctionToDiamondThatAlreadyExists', + type: 'event', + anonymous: false, + inputs: [ + { + name: 'stakerAddress', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'recordId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + { + name: 'amount', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + { + name: 'stakerAddressClient', + internalType: 'address', + type: 'address', + indexed: false, + }, + ], + name: 'StakeRecordCreated', }, { - type: 'error', + type: 'event', + anonymous: false, inputs: [ - { name: '_selectors', internalType: 'bytes4[]', type: 'bytes4[]' }, + { + name: 'validatorId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + { + name: 'recordId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + { + name: 'rewards', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, ], - name: 'CannotAddSelectorsToZeroAddress', + name: 'StakeRewardsClaimed', }, { - type: 'error', - inputs: [{ name: '_selector', internalType: 'bytes4', type: 'bytes4' }], - name: 'CannotRemoveFunctionThatDoesNotExist', + type: 'event', + anonymous: false, + inputs: [ + { name: '', internalType: 'string', type: 'string', indexed: false }, + ], + name: 'log', }, { - type: 'error', - inputs: [{ name: '_selector', internalType: 'bytes4', type: 'bytes4' }], - name: 'CannotRemoveImmutableFunction', + type: 'event', + anonymous: false, + inputs: [ + { name: '', internalType: 'address', type: 'address', indexed: false }, + ], + name: 'log_address', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'val', + internalType: 'uint256[]', + type: 'uint256[]', + indexed: false, + }, + ], + name: 'log_array', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'val', + internalType: 'int256[]', + type: 'int256[]', + indexed: false, + }, + ], + name: 'log_array', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'val', + internalType: 'address[]', + type: 'address[]', + indexed: false, + }, + ], + name: 'log_array', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: '', internalType: 'bytes', type: 'bytes', indexed: false }, + ], + name: 'log_bytes', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: '', internalType: 'bytes32', type: 'bytes32', indexed: false }, + ], + name: 'log_bytes32', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: '', internalType: 'int256', type: 'int256', indexed: false }, + ], + name: 'log_int', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: 'key', internalType: 'string', type: 'string', indexed: false }, + { name: 'val', internalType: 'address', type: 'address', indexed: false }, + ], + name: 'log_named_address', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: 'key', internalType: 'string', type: 'string', indexed: false }, + { + name: 'val', + internalType: 'uint256[]', + type: 'uint256[]', + indexed: false, + }, + ], + name: 'log_named_array', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: 'key', internalType: 'string', type: 'string', indexed: false }, + { + name: 'val', + internalType: 'int256[]', + type: 'int256[]', + indexed: false, + }, + ], + name: 'log_named_array', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: 'key', internalType: 'string', type: 'string', indexed: false }, + { + name: 'val', + internalType: 'address[]', + type: 'address[]', + indexed: false, + }, + ], + name: 'log_named_array', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: 'key', internalType: 'string', type: 'string', indexed: false }, + { name: 'val', internalType: 'bytes', type: 'bytes', indexed: false }, + ], + name: 'log_named_bytes', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: 'key', internalType: 'string', type: 'string', indexed: false }, + { name: 'val', internalType: 'bytes32', type: 'bytes32', indexed: false }, + ], + name: 'log_named_bytes32', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: 'key', internalType: 'string', type: 'string', indexed: false }, + { name: 'val', internalType: 'int256', type: 'int256', indexed: false }, + { + name: 'decimals', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'log_named_decimal_int', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: 'key', internalType: 'string', type: 'string', indexed: false }, + { name: 'val', internalType: 'uint256', type: 'uint256', indexed: false }, + { + name: 'decimals', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'log_named_decimal_uint', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: 'key', internalType: 'string', type: 'string', indexed: false }, + { name: 'val', internalType: 'int256', type: 'int256', indexed: false }, + ], + name: 'log_named_int', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: 'key', internalType: 'string', type: 'string', indexed: false }, + { name: 'val', internalType: 'string', type: 'string', indexed: false }, + ], + name: 'log_named_string', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: 'key', internalType: 'string', type: 'string', indexed: false }, + { name: 'val', internalType: 'uint256', type: 'uint256', indexed: false }, + ], + name: 'log_named_uint', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: '', internalType: 'string', type: 'string', indexed: false }, + ], + name: 'log_string', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: '', internalType: 'uint256', type: 'uint256', indexed: false }, + ], + name: 'log_uint', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: '', internalType: 'bytes', type: 'bytes', indexed: false }, + ], + name: 'logs', + }, + { + type: 'function', + inputs: [], + name: 'IS_TEST', + outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: 'numAddresses', internalType: 'uint256', type: 'uint256' }, + ], + name: '_generateAddresses', + outputs: [{ name: '', internalType: 'address[]', type: 'address[]' }], + stateMutability: 'pure', + }, + { + type: 'function', + inputs: [ + { name: 'numAddresses', internalType: 'uint256', type: 'uint256' }, + { name: 'offset', internalType: 'uint256', type: 'uint256' }, + ], + name: '_generateAddressesWithOffset', + outputs: [{ name: '', internalType: 'address[]', type: 'address[]' }], + stateMutability: 'pure', + }, + { + type: 'function', + inputs: [{ name: 'stakers', internalType: 'uint256', type: 'uint256' }], + name: '_generatePubKeys', + outputs: [{ name: '', internalType: 'bytes[]', type: 'bytes[]' }], + stateMutability: 'pure', + }, + { + type: 'function', + inputs: [{ name: 'numUint256s', internalType: 'uint256', type: 'uint256' }], + name: '_generateUint256s', + outputs: [{ name: '', internalType: 'uint256[]', type: 'uint256[]' }], + stateMutability: 'pure', + }, + { + type: 'function', + inputs: [ + { name: 'numUint256s', internalType: 'uint256', type: 'uint256' }, + { name: 'offset', internalType: 'uint256', type: 'uint256' }, + ], + name: '_generateUint256sWithOffset', + outputs: [{ name: '', internalType: 'uint256[]', type: 'uint256[]' }], + stateMutability: 'pure', + }, + { + type: 'function', + inputs: [ + { name: 'numValidators', internalType: 'uint256', type: 'uint256' }, + ], + name: '_generateValidators', + outputs: [ + { + name: '', + internalType: 'struct SetupAndUtils.TestValidator[]', + type: 'tuple[]', + components: [ + { name: 'stakerAddress', internalType: 'address', type: 'address' }, + { name: 'commsKey', internalType: 'uint256', type: 'uint256' }, + ], + }, + ], + stateMutability: 'pure', + }, + { + type: 'function', + inputs: [], + name: 'excludeArtifacts', + outputs: [ + { + name: 'excludedArtifacts_', + internalType: 'string[]', + type: 'string[]', + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'excludeContracts', + outputs: [ + { + name: 'excludedContracts_', + internalType: 'address[]', + type: 'address[]', + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'excludeSelectors', + outputs: [ + { + name: 'excludedSelectors_', + internalType: 'struct StdInvariant.FuzzSelector[]', + type: 'tuple[]', + components: [ + { name: 'addr', internalType: 'address', type: 'address' }, + { name: 'selectors', internalType: 'bytes4[]', type: 'bytes4[]' }, + ], + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'excludeSenders', + outputs: [ + { + name: 'excludedSenders_', + internalType: 'address[]', + type: 'address[]', + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'failed', + outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'setUp', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [], + name: 'targetArtifactSelectors', + outputs: [ + { + name: 'targetedArtifactSelectors_', + internalType: 'struct StdInvariant.FuzzArtifactSelector[]', + type: 'tuple[]', + components: [ + { name: 'artifact', internalType: 'string', type: 'string' }, + { name: 'selectors', internalType: 'bytes4[]', type: 'bytes4[]' }, + ], + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'targetArtifacts', + outputs: [ + { + name: 'targetedArtifacts_', + internalType: 'string[]', + type: 'string[]', + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'targetContracts', + outputs: [ + { + name: 'targetedContracts_', + internalType: 'address[]', + type: 'address[]', + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'targetInterfaces', + outputs: [ + { + name: 'targetedInterfaces_', + internalType: 'struct StdInvariant.FuzzInterface[]', + type: 'tuple[]', + components: [ + { name: 'addr', internalType: 'address', type: 'address' }, + { name: 'artifacts', internalType: 'string[]', type: 'string[]' }, + ], + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'targetSelectors', + outputs: [ + { + name: 'targetedSelectors_', + internalType: 'struct StdInvariant.FuzzSelector[]', + type: 'tuple[]', + components: [ + { name: 'addr', internalType: 'address', type: 'address' }, + { name: 'selectors', internalType: 'bytes4[]', type: 'bytes4[]' }, + ], + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'targetSenders', + outputs: [ + { + name: 'targetedSenders_', + internalType: 'address[]', + type: 'address[]', + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: 'usagePercent', internalType: 'uint256', type: 'uint256' }, + ], + name: 'testFuzz_setUsage', + outputs: [], + stateMutability: 'nonpayable', + }, +] as const; + +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// PubkeyRouter +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +export const pubkeyRouterAbi = [ + { + type: 'constructor', + inputs: [ + { + name: '_diamondCut', + internalType: 'struct IDiamond.FacetCut[]', + type: 'tuple[]', + components: [ + { name: 'facetAddress', internalType: 'address', type: 'address' }, + { + name: 'action', + internalType: 'enum IDiamond.FacetCutAction', + type: 'uint8', + }, + { + name: 'functionSelectors', + internalType: 'bytes4[]', + type: 'bytes4[]', + }, + ], + }, + { + name: '_args', + internalType: 'struct PubkeyRouterArgs', + type: 'tuple', + components: [ + { name: 'owner', internalType: 'address', type: 'address' }, + { name: 'init', internalType: 'address', type: 'address' }, + { name: 'initCalldata', internalType: 'bytes', type: 'bytes' }, + { + name: 'contractResolver', + internalType: 'address', + type: 'address', + }, + { + name: 'env', + internalType: 'enum ContractResolver.Env', + type: 'uint8', + }, + ], + }, + ], + stateMutability: 'payable', + }, + { + type: 'error', + inputs: [{ name: '_selector', internalType: 'bytes4', type: 'bytes4' }], + name: 'CannotAddFunctionToDiamondThatAlreadyExists', + }, + { + type: 'error', + inputs: [ + { name: '_selectors', internalType: 'bytes4[]', type: 'bytes4[]' }, + ], + name: 'CannotAddSelectorsToZeroAddress', + }, + { + type: 'error', + inputs: [{ name: '_selector', internalType: 'bytes4', type: 'bytes4' }], + name: 'CannotRemoveFunctionThatDoesNotExist', + }, + { + type: 'error', + inputs: [{ name: '_selector', internalType: 'bytes4', type: 'bytes4' }], + name: 'CannotRemoveImmutableFunction', }, { type: 'error', @@ -16824,6 +17554,46 @@ export const pubkeyRouterDiamondAbi = [ outputs: [{ name: '', internalType: 'address', type: 'address' }], stateMutability: 'view', }, + { + type: 'function', + inputs: [ + { name: 'ethAddresses', internalType: 'address[]', type: 'address[]' }, + ], + name: 'getPkpInfoFromEthAddresses', + outputs: [ + { + name: '', + internalType: 'struct LibPubkeyRouterStorage.PkpInfo[]', + type: 'tuple[]', + components: [ + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, + { name: 'pubkey', internalType: 'bytes', type: 'bytes' }, + { name: 'ethAddress', internalType: 'address', type: 'address' }, + ], + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: 'tokenIds', internalType: 'uint256[]', type: 'uint256[]' }, + ], + name: 'getPkpInfoFromTokenIds', + outputs: [ + { + name: '', + internalType: 'struct LibPubkeyRouterStorage.PkpInfo[]', + type: 'tuple[]', + components: [ + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, + { name: 'pubkey', internalType: 'bytes', type: 'bytes' }, + { name: 'ethAddress', internalType: 'address', type: 'address' }, + ], + }, + ], + stateMutability: 'view', + }, { type: 'function', inputs: [], @@ -17207,6 +17977,46 @@ export const pubkeyRouterFacetAbi = [ outputs: [{ name: '', internalType: 'address', type: 'address' }], stateMutability: 'view', }, + { + type: 'function', + inputs: [ + { name: 'ethAddresses', internalType: 'address[]', type: 'address[]' }, + ], + name: 'getPkpInfoFromEthAddresses', + outputs: [ + { + name: '', + internalType: 'struct LibPubkeyRouterStorage.PkpInfo[]', + type: 'tuple[]', + components: [ + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, + { name: 'pubkey', internalType: 'bytes', type: 'bytes' }, + { name: 'ethAddress', internalType: 'address', type: 'address' }, + ], + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: 'tokenIds', internalType: 'uint256[]', type: 'uint256[]' }, + ], + name: 'getPkpInfoFromTokenIds', + outputs: [ + { + name: '', + internalType: 'struct LibPubkeyRouterStorage.PkpInfo[]', + type: 'tuple[]', + components: [ + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, + { name: 'pubkey', internalType: 'bytes', type: 'bytes' }, + { name: 'ethAddress', internalType: 'address', type: 'address' }, + ], + }, + ], + stateMutability: 'view', + }, { type: 'function', inputs: [], @@ -18903,6 +19713,11 @@ export const stakingAdminFacetAbi = [ { type: 'error', inputs: [], name: 'CallerNotOwner' }, { type: 'error', inputs: [], name: 'CallerNotOwnerOrDevopsAdmin' }, { type: 'error', inputs: [], name: 'CannotModifyUnfrozen' }, + { + type: 'error', + inputs: [], + name: 'CannotMoveToLockedValidatorStateBeforeEpochEnds', + }, { type: 'error', inputs: [], name: 'CannotStakeZero' }, { type: 'error', inputs: [], name: 'InvalidNewSharePrice' }, { type: 'error', inputs: [], name: 'InvalidSlashPercentage' }, @@ -19423,6 +20238,11 @@ export const stakingAdminFacetAbi = [ internalType: 'uint256', type: 'uint256', }, + { + name: 'voteToAdvanceTimeOut', + internalType: 'uint256', + type: 'uint256', + }, ], }, ], @@ -20192,38 +21012,6 @@ export const stakingAdminTestAbi = [ export const stakingCommonAbi = [ { type: 'error', inputs: [], name: 'CannotModifyUnfrozen' }, - { type: 'error', inputs: [], name: 'NoEmptyStakingSlot' }, - { - type: 'event', - anonymous: false, - inputs: [ - { - name: 'stakerAddress', - internalType: 'address', - type: 'address', - indexed: false, - }, - { - name: 'recordId', - internalType: 'uint256', - type: 'uint256', - indexed: false, - }, - { - name: 'amount', - internalType: 'uint256', - type: 'uint256', - indexed: false, - }, - { - name: 'stakerAddressClient', - internalType: 'address', - type: 'address', - indexed: false, - }, - ], - name: 'StakeRecordCreated', - }, { type: 'event', anonymous: false, @@ -20652,6 +21440,11 @@ export const stakingDiamondAbi = [ { type: 'error', inputs: [], name: 'CallerNotOwner' }, { type: 'error', inputs: [], name: 'CallerNotOwnerOrDevopsAdmin' }, { type: 'error', inputs: [], name: 'CannotModifyUnfrozen' }, + { + type: 'error', + inputs: [], + name: 'CannotMoveToLockedValidatorStateBeforeEpochEnds', + }, { type: 'error', inputs: [], name: 'CannotStakeZero' }, { type: 'error', inputs: [], name: 'InvalidNewSharePrice' }, { type: 'error', inputs: [], name: 'InvalidSlashPercentage' }, @@ -21172,6 +21965,11 @@ export const stakingDiamondAbi = [ internalType: 'uint256', type: 'uint256', }, + { + name: 'voteToAdvanceTimeOut', + internalType: 'uint256', + type: 'uint256', + }, ], }, ], @@ -21608,15 +22406,6 @@ export const stakingDiamondAbi = [ ], name: 'Withdrawn', }, - { - type: 'function', - inputs: [ - { name: 'stakerAddress', internalType: 'address', type: 'address' }, - ], - name: 'balanceOf', - outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], - stateMutability: 'view', - }, { type: 'function', inputs: [ @@ -21894,6 +22683,15 @@ export const stakingDiamondAbi = [ outputs: [], stateMutability: 'nonpayable', }, + { + type: 'function', + inputs: [ + { name: 'stakerAddress', internalType: 'address', type: 'address' }, + ], + name: 'stakeBalanceOf', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, { type: 'function', inputs: [ @@ -21953,40 +22751,317 @@ export const stakingDiamondAbi = [ indexed: false, }, ], - name: 'KeySetConfigUpdated', + name: 'KeySetConfigUpdated', + }, + { + type: 'function', + inputs: [{ name: 'identifier', internalType: 'string', type: 'string' }], + name: 'deleteKeySet', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [{ name: 'identifier', internalType: 'string', type: 'string' }], + name: 'getKeySet', + outputs: [ + { + name: '', + internalType: 'struct LibStakingStorage.KeySetConfig', + type: 'tuple', + components: [ + { name: 'minimumThreshold', internalType: 'uint32', type: 'uint32' }, + { name: 'monetaryValue', internalType: 'uint32', type: 'uint32' }, + { name: 'completeIsolation', internalType: 'bool', type: 'bool' }, + { name: 'identifier', internalType: 'string', type: 'string' }, + { name: 'description', internalType: 'string', type: 'string' }, + { name: 'realms', internalType: 'uint256[]', type: 'uint256[]' }, + { name: 'curves', internalType: 'uint256[]', type: 'uint256[]' }, + { name: 'counts', internalType: 'uint256[]', type: 'uint256[]' }, + { + name: 'recoveryPartyMembers', + internalType: 'address[]', + type: 'address[]', + }, + ], + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'keySets', + outputs: [ + { + name: '', + internalType: 'struct LibStakingStorage.KeySetConfig[]', + type: 'tuple[]', + components: [ + { name: 'minimumThreshold', internalType: 'uint32', type: 'uint32' }, + { name: 'monetaryValue', internalType: 'uint32', type: 'uint32' }, + { name: 'completeIsolation', internalType: 'bool', type: 'bool' }, + { name: 'identifier', internalType: 'string', type: 'string' }, + { name: 'description', internalType: 'string', type: 'string' }, + { name: 'realms', internalType: 'uint256[]', type: 'uint256[]' }, + { name: 'curves', internalType: 'uint256[]', type: 'uint256[]' }, + { name: 'counts', internalType: 'uint256[]', type: 'uint256[]' }, + { + name: 'recoveryPartyMembers', + internalType: 'address[]', + type: 'address[]', + }, + ], + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { + name: 'update', + internalType: 'struct LibStakingStorage.KeySetConfig', + type: 'tuple', + components: [ + { name: 'minimumThreshold', internalType: 'uint32', type: 'uint32' }, + { name: 'monetaryValue', internalType: 'uint32', type: 'uint32' }, + { name: 'completeIsolation', internalType: 'bool', type: 'bool' }, + { name: 'identifier', internalType: 'string', type: 'string' }, + { name: 'description', internalType: 'string', type: 'string' }, + { name: 'realms', internalType: 'uint256[]', type: 'uint256[]' }, + { name: 'curves', internalType: 'uint256[]', type: 'uint256[]' }, + { name: 'counts', internalType: 'uint256[]', type: 'uint256[]' }, + { + name: 'recoveryPartyMembers', + internalType: 'address[]', + type: 'address[]', + }, + ], + }, + ], + name: 'setKeySet', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: 'identifier', internalType: 'string', type: 'string' }, + { + name: 'newRootKeys', + internalType: 'struct IPubkeyRouter.RootKey[]', + type: 'tuple[]', + components: [ + { name: 'pubkey', internalType: 'bytes', type: 'bytes' }, + { name: 'keyType', internalType: 'uint256', type: 'uint256' }, + ], + }, + ], + name: 'verifyKeySetCounts', + outputs: [ + { name: '', internalType: 'uint256', type: 'uint256' }, + { name: '', internalType: 'uint256', type: 'uint256' }, + ], + stateMutability: 'view', + }, + { type: 'error', inputs: [], name: 'ERC721ReceiverRejectedTokens' }, + { + type: 'error', + inputs: [], + name: 'ERC721TransferToNonERC721ReceiverImplementer', + }, + { type: 'error', inputs: [], name: 'NotApprovedOrOwner' }, + { type: 'error', inputs: [], name: 'NotOwner' }, + { type: 'error', inputs: [], name: 'SameAddress' }, + { type: 'error', inputs: [], name: 'ZeroAddress' }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'owner', + internalType: 'address', + type: 'address', + indexed: true, + }, + { + name: 'approved', + internalType: 'address', + type: 'address', + indexed: true, + }, + { + name: 'tokenId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + ], + name: 'Approval', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'owner', + internalType: 'address', + type: 'address', + indexed: true, + }, + { + name: 'operator', + internalType: 'address', + type: 'address', + indexed: true, + }, + { name: 'approved', internalType: 'bool', type: 'bool', indexed: false }, + ], + name: 'ApprovalForAll', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: 'from', internalType: 'address', type: 'address', indexed: true }, + { name: 'to', internalType: 'address', type: 'address', indexed: true }, + { + name: 'tokenId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + ], + name: 'Transfer', + }, + { + type: 'function', + inputs: [ + { name: 'approved', internalType: 'address', type: 'address' }, + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, + ], + name: 'approve', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [{ name: 'owner', internalType: 'address', type: 'address' }], + name: 'balanceOf', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [{ name: 'tokenId', internalType: 'uint256', type: 'uint256' }], + name: 'getApproved', + outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: 'owner', internalType: 'address', type: 'address' }, + { name: 'operator', internalType: 'address', type: 'address' }, + ], + name: 'isApprovedForAll', + outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [{ name: 'tokenId', internalType: 'uint256', type: 'uint256' }], + name: 'ownerOf', + outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [{ name: 'tokenId', internalType: 'uint256', type: 'uint256' }], + name: 'ownershipChange', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: 'from', internalType: 'address', type: 'address' }, + { name: 'to', internalType: 'address', type: 'address' }, + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, + ], + name: 'safeTransferFrom', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: 'from', internalType: 'address', type: 'address' }, + { name: 'to', internalType: 'address', type: 'address' }, + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, + { name: 'data', internalType: 'bytes', type: 'bytes' }, + ], + name: 'safeTransferFrom', + outputs: [], + stateMutability: 'nonpayable', }, { type: 'function', - inputs: [{ name: 'identifier', internalType: 'string', type: 'string' }], - name: 'deleteKeySet', + inputs: [ + { name: 'operator', internalType: 'address', type: 'address' }, + { name: 'approved', internalType: 'bool', type: 'bool' }, + ], + name: 'setApprovalForAll', outputs: [], stateMutability: 'nonpayable', }, { type: 'function', inputs: [ + { name: 'owner', internalType: 'address', type: 'address' }, + { name: 'index', internalType: 'uint256', type: 'uint256' }, + ], + name: 'tokenOfOwnerByIndex', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [{ name: 'tokenId', internalType: 'uint256', type: 'uint256' }], + name: 'tokenToStakeRecord', + outputs: [ { - name: 'update', - internalType: 'struct LibStakingStorage.KeySetConfig', + name: '', + internalType: 'struct LibStakingStorage.MappedStakeRecord', type: 'tuple', components: [ - { name: 'minimumThreshold', internalType: 'uint32', type: 'uint32' }, - { name: 'monetaryValue', internalType: 'uint32', type: 'uint32' }, - { name: 'completeIsolation', internalType: 'bool', type: 'bool' }, - { name: 'identifier', internalType: 'string', type: 'string' }, - { name: 'description', internalType: 'string', type: 'string' }, - { name: 'realms', internalType: 'uint256[]', type: 'uint256[]' }, - { name: 'curves', internalType: 'uint256[]', type: 'uint256[]' }, - { name: 'counts', internalType: 'uint256[]', type: 'uint256[]' }, { - name: 'recoveryPartyMembers', - internalType: 'address[]', - type: 'address[]', + name: 'operatorStakerAddress', + internalType: 'address', + type: 'address', }, + { name: 'stakeRecordId', internalType: 'uint256', type: 'uint256' }, ], }, ], - name: 'setKeySet', + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'totalSupply', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: 'from', internalType: 'address', type: 'address' }, + { name: 'to', internalType: 'address', type: 'address' }, + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, + ], + name: 'transferFrom', outputs: [], stateMutability: 'nonpayable', }, @@ -22466,6 +23541,19 @@ export const stakingDiamondAbi = [ ], name: 'StakingTokenSet', }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'realmId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'VoteToAdvanceTimeOutElapsed', + }, { type: 'event', anonymous: false, @@ -22519,15 +23607,6 @@ export const stakingDiamondAbi = [ outputs: [], stateMutability: 'pure', }, - { - type: 'function', - inputs: [ - { name: 'attestedAddress', internalType: 'address', type: 'address' }, - ], - name: 'getAttestedPubKey', - outputs: [{ name: '', internalType: 'bytes', type: 'bytes' }], - stateMutability: 'view', - }, { type: 'function', inputs: [ @@ -22893,6 +23972,11 @@ export const stakingDiamondAbi = [ { name: 'retries', internalType: 'uint256', type: 'uint256' }, { name: 'timeout', internalType: 'uint256', type: 'uint256' }, { name: 'startTime', internalType: 'uint256', type: 'uint256' }, + { + name: 'lastAdvanceVoteTime', + internalType: 'uint256', + type: 'uint256', + }, ], }, ], @@ -22988,6 +24072,11 @@ export const stakingDiamondAbi = [ { name: 'retries', internalType: 'uint256', type: 'uint256' }, { name: 'timeout', internalType: 'uint256', type: 'uint256' }, { name: 'startTime', internalType: 'uint256', type: 'uint256' }, + { + name: 'lastAdvanceVoteTime', + internalType: 'uint256', + type: 'uint256', + }, ], }, { name: '', internalType: 'uint256', type: 'uint256' }, @@ -23064,6 +24153,15 @@ export const stakingDiamondAbi = [ outputs: [{ name: '', internalType: 'address[]', type: 'address[]' }], stateMutability: 'view', }, + { + type: 'function', + inputs: [ + { name: 'attestedAddress', internalType: 'address', type: 'address' }, + ], + name: 'getAttestedPubKey', + outputs: [{ name: '', internalType: 'bytes', type: 'bytes' }], + stateMutability: 'view', + }, { type: 'function', inputs: [ @@ -23086,30 +24184,16 @@ export const stakingDiamondAbi = [ }, { type: 'function', - inputs: [{ name: 'identifier', internalType: 'string', type: 'string' }], - name: 'getKeySet', - outputs: [ + inputs: [ + { name: 'userStakerAddress', internalType: 'address', type: 'address' }, { - name: '', - internalType: 'struct LibStakingStorage.KeySetConfig', - type: 'tuple', - components: [ - { name: 'minimumThreshold', internalType: 'uint32', type: 'uint32' }, - { name: 'monetaryValue', internalType: 'uint32', type: 'uint32' }, - { name: 'completeIsolation', internalType: 'bool', type: 'bool' }, - { name: 'identifier', internalType: 'string', type: 'string' }, - { name: 'description', internalType: 'string', type: 'string' }, - { name: 'realms', internalType: 'uint256[]', type: 'uint256[]' }, - { name: 'curves', internalType: 'uint256[]', type: 'uint256[]' }, - { name: 'counts', internalType: 'uint256[]', type: 'uint256[]' }, - { - name: 'recoveryPartyMembers', - internalType: 'address[]', - type: 'address[]', - }, - ], + name: 'operatorStakerAddress', + internalType: 'address', + type: 'address', }, ], + name: 'getEmptyStakeRecordSlots', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], stateMutability: 'view', }, { @@ -23165,6 +24249,7 @@ export const stakingDiamondAbi = [ internalType: 'address', type: 'address', }, + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, ], }, ], @@ -23346,6 +24431,7 @@ export const stakingDiamondAbi = [ internalType: 'address', type: 'address', }, + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, ], }, ], @@ -23408,6 +24494,7 @@ export const stakingDiamondAbi = [ internalType: 'address', type: 'address', }, + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, ], }, ], @@ -23467,6 +24554,7 @@ export const stakingDiamondAbi = [ internalType: 'address', type: 'address', }, + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, ], }, { name: 'rewardEpochNumber', internalType: 'uint256', type: 'uint256' }, @@ -23524,6 +24612,7 @@ export const stakingDiamondAbi = [ internalType: 'address', type: 'address', }, + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, ], }, { name: 'rewardEpochNumber', internalType: 'uint256', type: 'uint256' }, @@ -23843,6 +24932,11 @@ export const stakingDiamondAbi = [ internalType: 'uint256', type: 'uint256', }, + { + name: 'voteToAdvanceTimeOut', + internalType: 'uint256', + type: 'uint256', + }, ], }, ], @@ -23922,34 +25016,6 @@ export const stakingDiamondAbi = [ outputs: [{ name: '', internalType: 'bool', type: 'bool' }], stateMutability: 'view', }, - { - type: 'function', - inputs: [], - name: 'keySets', - outputs: [ - { - name: '', - internalType: 'struct LibStakingStorage.KeySetConfig[]', - type: 'tuple[]', - components: [ - { name: 'minimumThreshold', internalType: 'uint32', type: 'uint32' }, - { name: 'monetaryValue', internalType: 'uint32', type: 'uint32' }, - { name: 'completeIsolation', internalType: 'bool', type: 'bool' }, - { name: 'identifier', internalType: 'string', type: 'string' }, - { name: 'description', internalType: 'string', type: 'string' }, - { name: 'realms', internalType: 'uint256[]', type: 'uint256[]' }, - { name: 'curves', internalType: 'uint256[]', type: 'uint256[]' }, - { name: 'counts', internalType: 'uint256[]', type: 'uint256[]' }, - { - name: 'recoveryPartyMembers', - internalType: 'address[]', - type: 'address[]', - }, - ], - }, - ], - stateMutability: 'view', - }, { type: 'function', inputs: [{ name: 'reason', internalType: 'uint256', type: 'uint256' }], @@ -24235,27 +25301,6 @@ export const stakingDiamondAbi = [ ], stateMutability: 'view', }, - { - type: 'function', - inputs: [ - { name: 'identifier', internalType: 'string', type: 'string' }, - { - name: 'newRootKeys', - internalType: 'struct IPubkeyRouter.RootKey[]', - type: 'tuple[]', - components: [ - { name: 'pubkey', internalType: 'bytes', type: 'bytes' }, - { name: 'keyType', internalType: 'uint256', type: 'uint256' }, - ], - }, - ], - name: 'verifyKeySetCounts', - outputs: [ - { name: '', internalType: 'uint256', type: 'uint256' }, - { name: '', internalType: 'uint256', type: 'uint256' }, - ], - stateMutability: 'view', - }, ] as const; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -24573,15 +25618,6 @@ export const stakingFacetAbi = [ ], name: 'Withdrawn', }, - { - type: 'function', - inputs: [ - { name: 'stakerAddress', internalType: 'address', type: 'address' }, - ], - name: 'balanceOf', - outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], - stateMutability: 'view', - }, { type: 'function', inputs: [ @@ -24859,6 +25895,15 @@ export const stakingFacetAbi = [ outputs: [], stateMutability: 'nonpayable', }, + { + type: 'function', + inputs: [ + { name: 'stakerAddress', internalType: 'address', type: 'address' }, + ], + name: 'stakeBalanceOf', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, { type: 'function', inputs: [ @@ -26147,6 +27192,62 @@ export const stakingKeySetsFacetAbi = [ outputs: [], stateMutability: 'nonpayable', }, + { + type: 'function', + inputs: [{ name: 'identifier', internalType: 'string', type: 'string' }], + name: 'getKeySet', + outputs: [ + { + name: '', + internalType: 'struct LibStakingStorage.KeySetConfig', + type: 'tuple', + components: [ + { name: 'minimumThreshold', internalType: 'uint32', type: 'uint32' }, + { name: 'monetaryValue', internalType: 'uint32', type: 'uint32' }, + { name: 'completeIsolation', internalType: 'bool', type: 'bool' }, + { name: 'identifier', internalType: 'string', type: 'string' }, + { name: 'description', internalType: 'string', type: 'string' }, + { name: 'realms', internalType: 'uint256[]', type: 'uint256[]' }, + { name: 'curves', internalType: 'uint256[]', type: 'uint256[]' }, + { name: 'counts', internalType: 'uint256[]', type: 'uint256[]' }, + { + name: 'recoveryPartyMembers', + internalType: 'address[]', + type: 'address[]', + }, + ], + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'keySets', + outputs: [ + { + name: '', + internalType: 'struct LibStakingStorage.KeySetConfig[]', + type: 'tuple[]', + components: [ + { name: 'minimumThreshold', internalType: 'uint32', type: 'uint32' }, + { name: 'monetaryValue', internalType: 'uint32', type: 'uint32' }, + { name: 'completeIsolation', internalType: 'bool', type: 'bool' }, + { name: 'identifier', internalType: 'string', type: 'string' }, + { name: 'description', internalType: 'string', type: 'string' }, + { name: 'realms', internalType: 'uint256[]', type: 'uint256[]' }, + { name: 'curves', internalType: 'uint256[]', type: 'uint256[]' }, + { name: 'counts', internalType: 'uint256[]', type: 'uint256[]' }, + { + name: 'recoveryPartyMembers', + internalType: 'address[]', + type: 'address[]', + }, + ], + }, + ], + stateMutability: 'view', + }, { type: 'function', inputs: [ @@ -26175,6 +27276,27 @@ export const stakingKeySetsFacetAbi = [ outputs: [], stateMutability: 'nonpayable', }, + { + type: 'function', + inputs: [ + { name: 'identifier', internalType: 'string', type: 'string' }, + { + name: 'newRootKeys', + internalType: 'struct IPubkeyRouter.RootKey[]', + type: 'tuple[]', + components: [ + { name: 'pubkey', internalType: 'bytes', type: 'bytes' }, + { name: 'keyType', internalType: 'uint256', type: 'uint256' }, + ], + }, + ], + name: 'verifyKeySetCounts', + outputs: [ + { name: '', internalType: 'uint256', type: 'uint256' }, + { name: '', internalType: 'uint256', type: 'uint256' }, + ], + stateMutability: 'view', + }, ] as const; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -26761,6 +27883,213 @@ export const stakingMigrateTestAbi = [ }, ] as const; +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// StakingNFTFacet +////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + +export const stakingNftFacetAbi = [ + { type: 'error', inputs: [], name: 'ERC721ReceiverRejectedTokens' }, + { + type: 'error', + inputs: [], + name: 'ERC721TransferToNonERC721ReceiverImplementer', + }, + { type: 'error', inputs: [], name: 'NotApprovedOrOwner' }, + { type: 'error', inputs: [], name: 'NotOwner' }, + { type: 'error', inputs: [], name: 'SameAddress' }, + { type: 'error', inputs: [], name: 'ZeroAddress' }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'owner', + internalType: 'address', + type: 'address', + indexed: true, + }, + { + name: 'approved', + internalType: 'address', + type: 'address', + indexed: true, + }, + { + name: 'tokenId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + ], + name: 'Approval', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'owner', + internalType: 'address', + type: 'address', + indexed: true, + }, + { + name: 'operator', + internalType: 'address', + type: 'address', + indexed: true, + }, + { name: 'approved', internalType: 'bool', type: 'bool', indexed: false }, + ], + name: 'ApprovalForAll', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { name: 'from', internalType: 'address', type: 'address', indexed: true }, + { name: 'to', internalType: 'address', type: 'address', indexed: true }, + { + name: 'tokenId', + internalType: 'uint256', + type: 'uint256', + indexed: true, + }, + ], + name: 'Transfer', + }, + { + type: 'function', + inputs: [ + { name: 'approved', internalType: 'address', type: 'address' }, + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, + ], + name: 'approve', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [{ name: 'owner', internalType: 'address', type: 'address' }], + name: 'balanceOf', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [{ name: 'tokenId', internalType: 'uint256', type: 'uint256' }], + name: 'getApproved', + outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: 'owner', internalType: 'address', type: 'address' }, + { name: 'operator', internalType: 'address', type: 'address' }, + ], + name: 'isApprovedForAll', + outputs: [{ name: '', internalType: 'bool', type: 'bool' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [{ name: 'tokenId', internalType: 'uint256', type: 'uint256' }], + name: 'ownerOf', + outputs: [{ name: '', internalType: 'address', type: 'address' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [{ name: 'tokenId', internalType: 'uint256', type: 'uint256' }], + name: 'ownershipChange', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: 'from', internalType: 'address', type: 'address' }, + { name: 'to', internalType: 'address', type: 'address' }, + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, + ], + name: 'safeTransferFrom', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: 'from', internalType: 'address', type: 'address' }, + { name: 'to', internalType: 'address', type: 'address' }, + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, + { name: 'data', internalType: 'bytes', type: 'bytes' }, + ], + name: 'safeTransferFrom', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: 'operator', internalType: 'address', type: 'address' }, + { name: 'approved', internalType: 'bool', type: 'bool' }, + ], + name: 'setApprovalForAll', + outputs: [], + stateMutability: 'nonpayable', + }, + { + type: 'function', + inputs: [ + { name: 'owner', internalType: 'address', type: 'address' }, + { name: 'index', internalType: 'uint256', type: 'uint256' }, + ], + name: 'tokenOfOwnerByIndex', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [{ name: 'tokenId', internalType: 'uint256', type: 'uint256' }], + name: 'tokenToStakeRecord', + outputs: [ + { + name: '', + internalType: 'struct LibStakingStorage.MappedStakeRecord', + type: 'tuple', + components: [ + { + name: 'operatorStakerAddress', + internalType: 'address', + type: 'address', + }, + { name: 'stakeRecordId', internalType: 'uint256', type: 'uint256' }, + ], + }, + ], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [], + name: 'totalSupply', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], + stateMutability: 'view', + }, + { + type: 'function', + inputs: [ + { name: 'from', internalType: 'address', type: 'address' }, + { name: 'to', internalType: 'address', type: 'address' }, + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, + ], + name: 'transferFrom', + outputs: [], + stateMutability: 'nonpayable', + }, +] as const; + ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // StakingTest ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -27488,6 +28817,16 @@ export const stakingTestAbi = [ outputs: [], stateMutability: 'nonpayable', }, + { + type: 'function', + inputs: [ + { name: 'amount', internalType: 'uint256', type: 'uint256' }, + { name: 'timeLock', internalType: 'uint256', type: 'uint256' }, + ], + name: 'testFuzz_DelegatingStakerStakesAgainstMultipleValidators', + outputs: [], + stateMutability: 'nonpayable', + }, { type: 'function', inputs: [ @@ -28083,6 +29422,11 @@ export const stakingTestAbi = [ export const stakingUtilsLibAbi = [ { type: 'error', inputs: [], name: 'CallerNotOwner' }, { type: 'error', inputs: [], name: 'CallerNotOwnerOrDevopsAdmin' }, + { + type: 'error', + inputs: [], + name: 'CannotMoveToLockedValidatorStateBeforeEpochEnds', + }, { type: 'error', inputs: [], name: 'CannotStakeZero' }, { type: 'error', inputs: [], name: 'InvalidNewSharePrice' }, { type: 'error', inputs: [], name: 'InvalidSlashPercentage' }, @@ -28116,6 +29460,7 @@ export const stakingUtilsLibAbi = [ ], name: 'MustBeInNextValidatorSetLockedOrReadyForNextEpochState', }, + { type: 'error', inputs: [], name: 'NoEmptyStakingSlot' }, { type: 'error', inputs: [ @@ -28145,12 +29490,43 @@ export const stakingUtilsLibAbi = [ inputs: [ { name: 'validator', internalType: 'address', type: 'address' }, { - name: 'validatorsInNextEpoch', - internalType: 'address[]', - type: 'address[]', + name: 'validatorsInNextEpoch', + internalType: 'address[]', + type: 'address[]', + }, + ], + name: 'ValidatorIsNotInNextEpoch', + }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'stakerAddress', + internalType: 'address', + type: 'address', + indexed: false, + }, + { + name: 'recordId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + { + name: 'amount', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + { + name: 'stakerAddressClient', + internalType: 'address', + type: 'address', + indexed: false, }, ], - name: 'ValidatorIsNotInNextEpoch', + name: 'StakeRecordCreated', }, { type: 'event', @@ -28294,6 +29670,17 @@ export const stakingValidatorFacetAbi = [ ], name: 'MustBeInNextValidatorSetLockedOrReadyForNextEpochState', }, + { + type: 'error', + inputs: [ + { + name: 'state', + internalType: 'enum LibStakingStorage.States', + type: 'uint8', + }, + ], + name: 'MustBeInNextValidatorSetLockedOrReadyForNextEpochState', + }, { type: 'error', inputs: [ @@ -28810,6 +30197,19 @@ export const stakingValidatorFacetAbi = [ ], name: 'ValidatorRejoinedNextEpoch', }, + { + type: 'event', + anonymous: false, + inputs: [ + { + name: 'realmId', + internalType: 'uint256', + type: 'uint256', + indexed: false, + }, + ], + name: 'VoteToAdvanceTimeOutElapsed', + }, { type: 'event', anonymous: false, @@ -28863,15 +30263,6 @@ export const stakingValidatorFacetAbi = [ outputs: [], stateMutability: 'pure', }, - { - type: 'function', - inputs: [ - { name: 'attestedAddress', internalType: 'address', type: 'address' }, - ], - name: 'getAttestedPubKey', - outputs: [{ name: '', internalType: 'bytes', type: 'bytes' }], - stateMutability: 'view', - }, { type: 'function', inputs: [ @@ -30367,6 +31758,11 @@ export const stakingViewsFacetAbi = [ { name: 'retries', internalType: 'uint256', type: 'uint256' }, { name: 'timeout', internalType: 'uint256', type: 'uint256' }, { name: 'startTime', internalType: 'uint256', type: 'uint256' }, + { + name: 'lastAdvanceVoteTime', + internalType: 'uint256', + type: 'uint256', + }, ], }, ], @@ -30462,6 +31858,11 @@ export const stakingViewsFacetAbi = [ { name: 'retries', internalType: 'uint256', type: 'uint256' }, { name: 'timeout', internalType: 'uint256', type: 'uint256' }, { name: 'startTime', internalType: 'uint256', type: 'uint256' }, + { + name: 'lastAdvanceVoteTime', + internalType: 'uint256', + type: 'uint256', + }, ], }, { name: '', internalType: 'uint256', type: 'uint256' }, @@ -30538,6 +31939,15 @@ export const stakingViewsFacetAbi = [ outputs: [{ name: '', internalType: 'address[]', type: 'address[]' }], stateMutability: 'view', }, + { + type: 'function', + inputs: [ + { name: 'attestedAddress', internalType: 'address', type: 'address' }, + ], + name: 'getAttestedPubKey', + outputs: [{ name: '', internalType: 'bytes', type: 'bytes' }], + stateMutability: 'view', + }, { type: 'function', inputs: [ @@ -30560,30 +31970,16 @@ export const stakingViewsFacetAbi = [ }, { type: 'function', - inputs: [{ name: 'identifier', internalType: 'string', type: 'string' }], - name: 'getKeySet', - outputs: [ + inputs: [ + { name: 'userStakerAddress', internalType: 'address', type: 'address' }, { - name: '', - internalType: 'struct LibStakingStorage.KeySetConfig', - type: 'tuple', - components: [ - { name: 'minimumThreshold', internalType: 'uint32', type: 'uint32' }, - { name: 'monetaryValue', internalType: 'uint32', type: 'uint32' }, - { name: 'completeIsolation', internalType: 'bool', type: 'bool' }, - { name: 'identifier', internalType: 'string', type: 'string' }, - { name: 'description', internalType: 'string', type: 'string' }, - { name: 'realms', internalType: 'uint256[]', type: 'uint256[]' }, - { name: 'curves', internalType: 'uint256[]', type: 'uint256[]' }, - { name: 'counts', internalType: 'uint256[]', type: 'uint256[]' }, - { - name: 'recoveryPartyMembers', - internalType: 'address[]', - type: 'address[]', - }, - ], + name: 'operatorStakerAddress', + internalType: 'address', + type: 'address', }, ], + name: 'getEmptyStakeRecordSlots', + outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], stateMutability: 'view', }, { @@ -30639,6 +32035,7 @@ export const stakingViewsFacetAbi = [ internalType: 'address', type: 'address', }, + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, ], }, ], @@ -30820,6 +32217,7 @@ export const stakingViewsFacetAbi = [ internalType: 'address', type: 'address', }, + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, ], }, ], @@ -30882,6 +32280,7 @@ export const stakingViewsFacetAbi = [ internalType: 'address', type: 'address', }, + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, ], }, ], @@ -30941,6 +32340,7 @@ export const stakingViewsFacetAbi = [ internalType: 'address', type: 'address', }, + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, ], }, { name: 'rewardEpochNumber', internalType: 'uint256', type: 'uint256' }, @@ -30998,6 +32398,7 @@ export const stakingViewsFacetAbi = [ internalType: 'address', type: 'address', }, + { name: 'tokenId', internalType: 'uint256', type: 'uint256' }, ], }, { name: 'rewardEpochNumber', internalType: 'uint256', type: 'uint256' }, @@ -31317,6 +32718,11 @@ export const stakingViewsFacetAbi = [ internalType: 'uint256', type: 'uint256', }, + { + name: 'voteToAdvanceTimeOut', + internalType: 'uint256', + type: 'uint256', + }, ], }, ], @@ -31396,34 +32802,6 @@ export const stakingViewsFacetAbi = [ outputs: [{ name: '', internalType: 'bool', type: 'bool' }], stateMutability: 'view', }, - { - type: 'function', - inputs: [], - name: 'keySets', - outputs: [ - { - name: '', - internalType: 'struct LibStakingStorage.KeySetConfig[]', - type: 'tuple[]', - components: [ - { name: 'minimumThreshold', internalType: 'uint32', type: 'uint32' }, - { name: 'monetaryValue', internalType: 'uint32', type: 'uint32' }, - { name: 'completeIsolation', internalType: 'bool', type: 'bool' }, - { name: 'identifier', internalType: 'string', type: 'string' }, - { name: 'description', internalType: 'string', type: 'string' }, - { name: 'realms', internalType: 'uint256[]', type: 'uint256[]' }, - { name: 'curves', internalType: 'uint256[]', type: 'uint256[]' }, - { name: 'counts', internalType: 'uint256[]', type: 'uint256[]' }, - { - name: 'recoveryPartyMembers', - internalType: 'address[]', - type: 'address[]', - }, - ], - }, - ], - stateMutability: 'view', - }, { type: 'function', inputs: [{ name: 'reason', internalType: 'uint256', type: 'uint256' }], @@ -31709,27 +33087,6 @@ export const stakingViewsFacetAbi = [ ], stateMutability: 'view', }, - { - type: 'function', - inputs: [ - { name: 'identifier', internalType: 'string', type: 'string' }, - { - name: 'newRootKeys', - internalType: 'struct IPubkeyRouter.RootKey[]', - type: 'tuple[]', - components: [ - { name: 'pubkey', internalType: 'bytes', type: 'bytes' }, - { name: 'keyType', internalType: 'uint256', type: 'uint256' }, - ], - }, - ], - name: 'verifyKeySetCounts', - outputs: [ - { name: '', internalType: 'uint256', type: 'uint256' }, - { name: '', internalType: 'uint256', type: 'uint256' }, - ], - stateMutability: 'view', - }, ] as const; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// @@ -35084,6 +36441,53 @@ export const vmAbi = [ outputs: [], stateMutability: 'nonpayable', }, + { + type: 'function', + inputs: [ + { name: 'bindingsPath', internalType: 'string', type: 'string' }, + { name: 'typeName', internalType: 'string', type: 'string' }, + { name: 'abiEncodedData', internalType: 'bytes', type: 'bytes' }, + ], + name: 'eip712HashStruct', + outputs: [{ name: 'typeHash', internalType: 'bytes32', type: 'bytes32' }], + stateMutability: 'pure', + }, + { + type: 'function', + inputs: [ + { name: 'typeNameOrDefinition', internalType: 'string', type: 'string' }, + { name: 'abiEncodedData', internalType: 'bytes', type: 'bytes' }, + ], + name: 'eip712HashStruct', + outputs: [{ name: 'typeHash', internalType: 'bytes32', type: 'bytes32' }], + stateMutability: 'pure', + }, + { + type: 'function', + inputs: [ + { name: 'bindingsPath', internalType: 'string', type: 'string' }, + { name: 'typeName', internalType: 'string', type: 'string' }, + ], + name: 'eip712HashType', + outputs: [{ name: 'typeHash', internalType: 'bytes32', type: 'bytes32' }], + stateMutability: 'pure', + }, + { + type: 'function', + inputs: [ + { name: 'typeNameOrDefinition', internalType: 'string', type: 'string' }, + ], + name: 'eip712HashType', + outputs: [{ name: 'typeHash', internalType: 'bytes32', type: 'bytes32' }], + stateMutability: 'pure', + }, + { + type: 'function', + inputs: [{ name: 'jsonData', internalType: 'string', type: 'string' }], + name: 'eip712HashTypedData', + outputs: [{ name: 'digest', internalType: 'bytes32', type: 'bytes32' }], + stateMutability: 'pure', + }, { type: 'function', inputs: [{ name: 'name', internalType: 'string', type: 'string' }], @@ -36147,6 +37551,13 @@ export const vmAbi = [ outputs: [{ name: 'nonce', internalType: 'uint64', type: 'uint64' }], stateMutability: 'nonpayable', }, + { + type: 'function', + inputs: [{ name: 'blockNumber', internalType: 'uint256', type: 'uint256' }], + name: 'getRawBlockHeader', + outputs: [{ name: 'rlpHeader', internalType: 'bytes', type: 'bytes' }], + stateMutability: 'view', + }, { type: 'function', inputs: [], @@ -36179,6 +37590,27 @@ export const vmAbi = [ outputs: [{ name: 'diff', internalType: 'string', type: 'string' }], stateMutability: 'view', }, + { + type: 'function', + inputs: [], + name: 'getStorageAccesses', + outputs: [ + { + name: 'storageAccesses', + internalType: 'struct VmSafe.StorageAccess[]', + type: 'tuple[]', + components: [ + { name: 'account', internalType: 'address', type: 'address' }, + { name: 'slot', internalType: 'bytes32', type: 'bytes32' }, + { name: 'isWrite', internalType: 'bool', type: 'bool' }, + { name: 'previousValue', internalType: 'bytes32', type: 'bytes32' }, + { name: 'newValue', internalType: 'bytes32', type: 'bytes32' }, + { name: 'reverted', internalType: 'bool', type: 'bool' }, + ], + }, + ], + stateMutability: 'view', + }, { type: 'function', inputs: [], @@ -37073,7 +38505,7 @@ export const vmAbi = [ inputs: [], name: 'randomAddress', outputs: [{ name: '', internalType: 'address', type: 'address' }], - stateMutability: 'nonpayable', + stateMutability: 'view', }, { type: 'function', @@ -37122,7 +38554,7 @@ export const vmAbi = [ inputs: [], name: 'randomUint', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], - stateMutability: 'nonpayable', + stateMutability: 'view', }, { type: 'function', @@ -37139,7 +38571,7 @@ export const vmAbi = [ ], name: 'randomUint', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], - stateMutability: 'nonpayable', + stateMutability: 'view', }, { type: 'function', @@ -37755,6 +39187,13 @@ export const vmAbi = [ outputs: [], stateMutability: 'nonpayable', }, + { + type: 'function', + inputs: [{ name: 'seed', internalType: 'uint256', type: 'uint256' }], + name: 'setSeed', + outputs: [], + stateMutability: 'nonpayable', + }, { type: 'function', inputs: [{ name: 'array', internalType: 'uint256[]', type: 'uint256[]' }], @@ -38301,6 +39740,8 @@ export const vmAbi = [ ], }, { name: 'depth', internalType: 'uint64', type: 'uint64' }, + { name: 'oldNonce', internalType: 'uint64', type: 'uint64' }, + { name: 'newNonce', internalType: 'uint64', type: 'uint64' }, ], }, ], @@ -40328,6 +41769,53 @@ export const vmSafeAbi = [ outputs: [{ name: 'privateKey', internalType: 'uint256', type: 'uint256' }], stateMutability: 'pure', }, + { + type: 'function', + inputs: [ + { name: 'bindingsPath', internalType: 'string', type: 'string' }, + { name: 'typeName', internalType: 'string', type: 'string' }, + { name: 'abiEncodedData', internalType: 'bytes', type: 'bytes' }, + ], + name: 'eip712HashStruct', + outputs: [{ name: 'typeHash', internalType: 'bytes32', type: 'bytes32' }], + stateMutability: 'pure', + }, + { + type: 'function', + inputs: [ + { name: 'typeNameOrDefinition', internalType: 'string', type: 'string' }, + { name: 'abiEncodedData', internalType: 'bytes', type: 'bytes' }, + ], + name: 'eip712HashStruct', + outputs: [{ name: 'typeHash', internalType: 'bytes32', type: 'bytes32' }], + stateMutability: 'pure', + }, + { + type: 'function', + inputs: [ + { name: 'bindingsPath', internalType: 'string', type: 'string' }, + { name: 'typeName', internalType: 'string', type: 'string' }, + ], + name: 'eip712HashType', + outputs: [{ name: 'typeHash', internalType: 'bytes32', type: 'bytes32' }], + stateMutability: 'pure', + }, + { + type: 'function', + inputs: [ + { name: 'typeNameOrDefinition', internalType: 'string', type: 'string' }, + ], + name: 'eip712HashType', + outputs: [{ name: 'typeHash', internalType: 'bytes32', type: 'bytes32' }], + stateMutability: 'pure', + }, + { + type: 'function', + inputs: [{ name: 'jsonData', internalType: 'string', type: 'string' }], + name: 'eip712HashTypedData', + outputs: [{ name: 'digest', internalType: 'bytes32', type: 'bytes32' }], + stateMutability: 'pure', + }, { type: 'function', inputs: [{ name: 'name', internalType: 'string', type: 'string' }], @@ -40985,6 +42473,13 @@ export const vmSafeAbi = [ outputs: [{ name: 'nonce', internalType: 'uint64', type: 'uint64' }], stateMutability: 'nonpayable', }, + { + type: 'function', + inputs: [{ name: 'blockNumber', internalType: 'uint256', type: 'uint256' }], + name: 'getRawBlockHeader', + outputs: [{ name: 'rlpHeader', internalType: 'bytes', type: 'bytes' }], + stateMutability: 'view', + }, { type: 'function', inputs: [], @@ -41017,6 +42512,27 @@ export const vmSafeAbi = [ outputs: [{ name: 'diff', internalType: 'string', type: 'string' }], stateMutability: 'view', }, + { + type: 'function', + inputs: [], + name: 'getStorageAccesses', + outputs: [ + { + name: 'storageAccesses', + internalType: 'struct VmSafe.StorageAccess[]', + type: 'tuple[]', + components: [ + { name: 'account', internalType: 'address', type: 'address' }, + { name: 'slot', internalType: 'bytes32', type: 'bytes32' }, + { name: 'isWrite', internalType: 'bool', type: 'bool' }, + { name: 'previousValue', internalType: 'bytes32', type: 'bytes32' }, + { name: 'newValue', internalType: 'bytes32', type: 'bytes32' }, + { name: 'reverted', internalType: 'bool', type: 'bool' }, + ], + }, + ], + stateMutability: 'view', + }, { type: 'function', inputs: [], @@ -41662,7 +43178,7 @@ export const vmSafeAbi = [ inputs: [], name: 'randomAddress', outputs: [{ name: '', internalType: 'address', type: 'address' }], - stateMutability: 'nonpayable', + stateMutability: 'view', }, { type: 'function', @@ -41711,7 +43227,7 @@ export const vmSafeAbi = [ inputs: [], name: 'randomUint', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], - stateMutability: 'nonpayable', + stateMutability: 'view', }, { type: 'function', @@ -41728,7 +43244,7 @@ export const vmSafeAbi = [ ], name: 'randomUint', outputs: [{ name: '', internalType: 'uint256', type: 'uint256' }], - stateMutability: 'nonpayable', + stateMutability: 'view', }, { type: 'function', @@ -42200,6 +43716,13 @@ export const vmSafeAbi = [ outputs: [], stateMutability: 'nonpayable', }, + { + type: 'function', + inputs: [{ name: 'seed', internalType: 'uint256', type: 'uint256' }], + name: 'setSeed', + outputs: [], + stateMutability: 'nonpayable', + }, { type: 'function', inputs: [{ name: 'array', internalType: 'uint256[]', type: 'uint256[]' }], @@ -42622,6 +44145,8 @@ export const vmSafeAbi = [ ], }, { name: 'depth', internalType: 'uint64', type: 'uint64' }, + { name: 'oldNonce', internalType: 'uint64', type: 'uint64' }, + { name: 'newNonce', internalType: 'uint64', type: 'uint64' }, ], }, ], From 9cd6e7db97b44c4c9c6f19590c69e29649841c2c Mon Sep 17 00:00:00 2001 From: Howard Tam Date: Fri, 28 Nov 2025 20:23:21 -0800 Subject: [PATCH 07/18] Add StakingNFTFacet to hardhat config --- blockchain/contracts/hardhat.config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/blockchain/contracts/hardhat.config.ts b/blockchain/contracts/hardhat.config.ts index 6df2440..6fb72d8 100644 --- a/blockchain/contracts/hardhat.config.ts +++ b/blockchain/contracts/hardhat.config.ts @@ -313,6 +313,7 @@ const config: HardhatUserConfig = { 'StakingAdminFacet', 'StakingAcrossRealmsFacet', 'StakingKeySetsFacet', + 'StakingNFTFacet', 'DiamondCutFacet', 'DiamondLoupeFacet', ], From 1e6eec298459d72334be939cf04805521e4841b2 Mon Sep 17 00:00:00 2001 From: Howard Date: Fri, 28 Nov 2025 23:25:43 -0500 Subject: [PATCH 08/18] Update ABIs and rust bindings --- blockchain/contracts/abis/Staking.abi | 470 +++- .../lit-blockchain-lite/abis/Staking.json | 470 +++- .../src/contracts/staking.rs | 1923 ++++++++++++++++- .../lit-blockchain/abis/PKPHelper.json | 4 +- .../lit-core/lit-blockchain/abis/Staking.json | 470 +++- .../lit-blockchain/src/contracts/staking.rs | 1861 +++++++++++++++- 6 files changed, 4960 insertions(+), 238 deletions(-) diff --git a/blockchain/contracts/abis/Staking.abi b/blockchain/contracts/abis/Staking.abi index 9af533e..be17186 100644 --- a/blockchain/contracts/abis/Staking.abi +++ b/blockchain/contracts/abis/Staking.abi @@ -2075,25 +2075,6 @@ "name": "Withdrawn", "type": "event" }, - { - "inputs": [ - { - "internalType": "address", - "name": "stakerAddress", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -2545,6 +2526,25 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "stakerAddress", + "type": "address" + } + ], + "name": "stakeBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -2859,6 +2859,389 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "ERC721ReceiverRejectedTokens", + "type": "error" + }, + { + "inputs": [], + "name": "ERC721TransferToNonERC721ReceiverImplementer", + "type": "error" + }, + { + "inputs": [], + "name": "NotApprovedOrOwner", + "type": "error" + }, + { + "inputs": [], + "name": "NotOwner", + "type": "error" + }, + { + "inputs": [], + "name": "SameAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownershipChange", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenToStakeRecord", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "operatorStakerAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "stakeRecordId", + "type": "uint256" + } + ], + "internalType": "struct LibStakingStorage.MappedStakeRecord", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "ActiveValidatorsCannotLeave", @@ -4679,6 +5062,30 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "userStakerAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "operatorStakerAddress", + "type": "address" + } + ], + "name": "getEmptyStakeRecordSlots", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "getKeyTypes", @@ -4777,6 +5184,11 @@ "internalType": "address", "name": "attributionAddress", "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" } ], "internalType": "struct LibStakingStorage.StakeRecord", @@ -5118,6 +5530,11 @@ "internalType": "address", "name": "attributionAddress", "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" } ], "internalType": "struct LibStakingStorage.StakeRecord", @@ -5218,6 +5635,11 @@ "internalType": "address", "name": "attributionAddress", "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" } ], "internalType": "struct LibStakingStorage.StakeRecord[]", @@ -5339,6 +5761,11 @@ "internalType": "address", "name": "attributionAddress", "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" } ], "internalType": "struct LibStakingStorage.StakeRecord", @@ -5446,6 +5873,11 @@ "internalType": "address", "name": "attributionAddress", "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" } ], "internalType": "struct LibStakingStorage.StakeRecord", diff --git a/rust/lit-core/lit-blockchain-lite/abis/Staking.json b/rust/lit-core/lit-blockchain-lite/abis/Staking.json index 5925884..479101e 100644 --- a/rust/lit-core/lit-blockchain-lite/abis/Staking.json +++ b/rust/lit-core/lit-blockchain-lite/abis/Staking.json @@ -2079,25 +2079,6 @@ "name": "Withdrawn", "type": "event" }, - { - "inputs": [ - { - "internalType": "address", - "name": "stakerAddress", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -2549,6 +2530,25 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "stakerAddress", + "type": "address" + } + ], + "name": "stakeBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -2863,6 +2863,389 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "ERC721ReceiverRejectedTokens", + "type": "error" + }, + { + "inputs": [], + "name": "ERC721TransferToNonERC721ReceiverImplementer", + "type": "error" + }, + { + "inputs": [], + "name": "NotApprovedOrOwner", + "type": "error" + }, + { + "inputs": [], + "name": "NotOwner", + "type": "error" + }, + { + "inputs": [], + "name": "SameAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownershipChange", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenToStakeRecord", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "operatorStakerAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "stakeRecordId", + "type": "uint256" + } + ], + "internalType": "struct LibStakingStorage.MappedStakeRecord", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "ActiveValidatorsCannotLeave", @@ -4683,6 +5066,30 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "userStakerAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "operatorStakerAddress", + "type": "address" + } + ], + "name": "getEmptyStakeRecordSlots", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "getKeyTypes", @@ -4781,6 +5188,11 @@ "internalType": "address", "name": "attributionAddress", "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" } ], "internalType": "struct LibStakingStorage.StakeRecord", @@ -5122,6 +5534,11 @@ "internalType": "address", "name": "attributionAddress", "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" } ], "internalType": "struct LibStakingStorage.StakeRecord", @@ -5222,6 +5639,11 @@ "internalType": "address", "name": "attributionAddress", "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" } ], "internalType": "struct LibStakingStorage.StakeRecord[]", @@ -5343,6 +5765,11 @@ "internalType": "address", "name": "attributionAddress", "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" } ], "internalType": "struct LibStakingStorage.StakeRecord", @@ -5450,6 +5877,11 @@ "internalType": "address", "name": "attributionAddress", "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" } ], "internalType": "struct LibStakingStorage.StakeRecord", diff --git a/rust/lit-core/lit-blockchain-lite/src/contracts/staking.rs b/rust/lit-core/lit-blockchain-lite/src/contracts/staking.rs index bc8580a..406bd4c 100644 --- a/rust/lit-core/lit-blockchain-lite/src/contracts/staking.rs +++ b/rust/lit-core/lit-blockchain-lite/src/contracts/staking.rs @@ -400,6 +400,35 @@ abi_functions.append(&mut __abi_functions_4()); }, ], ), + ( + ::std::borrow::ToOwned::to_owned("approve"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("approve"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("approved"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("balanceOf"), ::std::vec![ @@ -407,7 +436,7 @@ abi_functions.append(&mut __abi_functions_4()); name: ::std::borrow::ToOwned::to_owned("balanceOf"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakerAddress"), + name: ::std::borrow::ToOwned::to_owned("owner"), kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( ::std::borrow::ToOwned::to_owned("address"), @@ -1533,6 +1562,36 @@ abi_functions.append(&mut __abi_functions_4()); }, ], ), + ( + ::std::borrow::ToOwned::to_owned("getApproved"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getApproved"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("getAttestedPubKey"), ::std::vec![ @@ -1684,6 +1743,58 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( + ::std::borrow::ToOwned::to_owned("getEmptyStakeRecordSlots"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "getEmptyStakeRecordSlots", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("userStakerAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "operatorStakerAddress", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ) + ] + ) + } + + + +#[allow(deprecated)] + fn __abi_functions_2() -> std::collections::BTreeMap> { + + std::collections::BTreeMap::from( + [ + ( ::std::borrow::ToOwned::to_owned("getKeySet"), ::std::vec![ ::ethers::core::abi::ethabi::Function { @@ -1800,19 +1911,8 @@ abi_functions.append(&mut __abi_functions_4()); state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, }, ], - ) - ] - ) - } - - - -#[allow(deprecated)] - fn __abi_functions_2() -> std::collections::BTreeMap> { - - std::collections::BTreeMap::from( - [ - ( + ), + ( ::std::borrow::ToOwned::to_owned("getLastStakeRecord"), ::std::vec![ ::ethers::core::abi::ethabi::Function { @@ -1848,6 +1948,7 @@ abi_functions.append(&mut __abi_functions_4()); ::ethers::core::abi::ethabi::ParamType::Bool, ::ethers::core::abi::ethabi::ParamType::Bool, ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ], ), internal_type: ::core::option::Option::Some( @@ -2682,6 +2783,7 @@ abi_functions.append(&mut __abi_functions_4()); ::ethers::core::abi::ethabi::ParamType::Bool, ::ethers::core::abi::ethabi::ParamType::Bool, ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ], ), internal_type: ::core::option::Option::Some( @@ -2779,6 +2881,7 @@ abi_functions.append(&mut __abi_functions_4()); ::ethers::core::abi::ethabi::ParamType::Bool, ::ethers::core::abi::ethabi::ParamType::Bool, ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ], ), ), @@ -2911,6 +3014,7 @@ abi_functions.append(&mut __abi_functions_4()); ::ethers::core::abi::ethabi::ParamType::Bool, ::ethers::core::abi::ethabi::ParamType::Bool, ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ], ), internal_type: ::core::option::Option::Some( @@ -3016,6 +3120,7 @@ abi_functions.append(&mut __abi_functions_4()); ::ethers::core::abi::ethabi::ParamType::Bool, ::ethers::core::abi::ethabi::ParamType::Bool, ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ], ), internal_type: ::core::option::Option::Some( @@ -3718,8 +3823,19 @@ abi_functions.append(&mut __abi_functions_4()); state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, }, ], - ), - ( + ) + ] + ) + } + + + +#[allow(deprecated)] + fn __abi_functions_3() -> std::collections::BTreeMap> { + + std::collections::BTreeMap::from( + [ + ( ::std::borrow::ToOwned::to_owned("initializeRewardEpoch"), ::std::vec![ ::ethers::core::abi::ethabi::Function { @@ -3832,19 +3948,8 @@ abi_functions.append(&mut __abi_functions_4()); state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, }, ], - ) - ] - ) - } - - - -#[allow(deprecated)] - fn __abi_functions_3() -> std::collections::BTreeMap> { - - std::collections::BTreeMap::from( - [ - ( + ), + ( ::std::borrow::ToOwned::to_owned("isActiveValidatorByNodeAddress"), ::std::vec![ ::ethers::core::abi::ethabi::Function { @@ -3963,6 +4068,41 @@ abi_functions.append(&mut __abi_functions_4()); }, ], ), + ( + ::std::borrow::ToOwned::to_owned("isApprovedForAll"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("isApprovedForAll"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("operator"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("isReadyForNextEpoch"), ::std::vec![ @@ -4690,6 +4830,68 @@ abi_functions.append(&mut __abi_functions_4()); }, ], ), + ( + ::std::borrow::ToOwned::to_owned("ownerOf"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("ownerOf"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ownershipChange"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("ownershipChange"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("permittedRealmsForValidator"), ::std::vec![ @@ -5109,13 +5311,27 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("setComplaintConfig"), + ::std::borrow::ToOwned::to_owned("safeTransferFrom"), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setComplaintConfig"), + name: ::std::borrow::ToOwned::to_owned("safeTransferFrom"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("reason"), + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenId"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -5123,7 +5339,94 @@ abi_functions.append(&mut __abi_functions_4()); ::std::borrow::ToOwned::to_owned("uint256"), ), }, - ::ethers::core::abi::ethabi::Param { + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("safeTransferFrom"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("setApprovalForAll"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("setApprovalForAll"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("operator"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("approved"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("setComplaintConfig"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("setComplaintConfig"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reason"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { name: ::std::borrow::ToOwned::to_owned("config"), kind: ::ethers::core::abi::ethabi::ParamType::Tuple( ::std::vec![ @@ -5220,8 +5523,19 @@ abi_functions.append(&mut __abi_functions_4()); state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, }, ], - ), - ( + ) + ] + ) + } + + + +#[allow(deprecated)] + fn __abi_functions_4() -> std::collections::BTreeMap> { + + std::collections::BTreeMap::from( + [ + ( ::std::borrow::ToOwned::to_owned("setDemeritRejoinThreshold"), ::std::vec![ ::ethers::core::abi::ethabi::Function { @@ -5483,19 +5797,8 @@ abi_functions.append(&mut __abi_functions_4()); state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, }, ], - ) - ] - ) - } - - - -#[allow(deprecated)] - fn __abi_functions_4() -> std::collections::BTreeMap> { - - std::collections::BTreeMap::from( - [ - ( + ), + ( ::std::borrow::ToOwned::to_owned("setLitActionConfig"), ::std::vec![ ::ethers::core::abi::ethabi::Function { @@ -5969,6 +6272,36 @@ abi_functions.append(&mut __abi_functions_4()); }, ], ), + ( + ::std::borrow::ToOwned::to_owned("stakeBalanceOf"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("stakeBalanceOf"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakerAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("stakerToValidatorsTheyStakedTo"), ::std::vec![ @@ -6065,6 +6398,142 @@ abi_functions.append(&mut __abi_functions_4()); }, ], ), + ( + ::std::borrow::ToOwned::to_owned("tokenOfOwnerByIndex"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "tokenOfOwnerByIndex", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("index"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("tokenToStakeRecord"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("tokenToStakeRecord"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct LibStakingStorage.MappedStakeRecord", + ), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("totalSupply"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("totalSupply"), + inputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("transferFrom"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("transferFrom"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("transferOwnership"), ::std::vec![ @@ -6392,6 +6861,60 @@ abi_functions.append(&mut __abi_functions_4()); }, ], ), + ( + ::std::borrow::ToOwned::to_owned("Approval"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Approval"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("approved"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("tokenId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: true, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ApprovalForAll"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("ApprovalForAll"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("operator"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("approved"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("AttestedWalletRegistered"), ::std::vec![ @@ -7185,6 +7708,34 @@ abi_functions.append(&mut __abi_functions_4()); }, ], ), + ( + ::std::borrow::ToOwned::to_owned("Transfer"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Transfer"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("tokenId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: true, + }, + ], + anonymous: false, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("TrustedForwarderSet"), ::std::vec![ @@ -7888,6 +8439,30 @@ abi_errors.append(&mut __abi_errors_2()); }, ], ), + ( + ::std::borrow::ToOwned::to_owned("ERC721ReceiverRejectedTokens"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "ERC721ReceiverRejectedTokens", + ), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned( + "ERC721TransferToNonERC721ReceiverImplementer", + ), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "ERC721TransferToNonERC721ReceiverImplementer", + ), + inputs: ::std::vec![], + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("IncorrectFacetCutAction"), ::std::vec![ @@ -8266,6 +8841,15 @@ abi_errors.append(&mut __abi_errors_2()); }, ], ), + ( + ::std::borrow::ToOwned::to_owned("NotApprovedOrOwner"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NotApprovedOrOwner"), + inputs: ::std::vec![], + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("NotContractOwner"), ::std::vec![ @@ -8289,8 +8873,19 @@ abi_errors.append(&mut __abi_errors_2()); ], }, ], - ), - ( + ) + ] + ) + } + + + +#[allow(deprecated)] + fn __abi_errors_2() -> std::collections::BTreeMap> { + + std::collections::BTreeMap::from( + [ + ( ::std::borrow::ToOwned::to_owned( "NotEnoughTimeElapsedForTimeoutSinceLastEpoch", ), @@ -8394,19 +8989,8 @@ abi_errors.append(&mut __abi_errors_2()); ], }, ], - ) - ] - ) - } - - - -#[allow(deprecated)] - fn __abi_errors_2() -> std::collections::BTreeMap> { - - std::collections::BTreeMap::from( - [ - ( + ), + ( ::std::borrow::ToOwned::to_owned( "NotEnoughValidatorsReadyForNextEpoch", ), @@ -8453,6 +9037,15 @@ abi_errors.append(&mut __abi_errors_2()); }, ], ), + ( + ::std::borrow::ToOwned::to_owned("NotOwner"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NotOwner"), + inputs: ::std::vec![], + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("RealmIdNotFound"), ::std::vec![ @@ -8502,6 +9095,15 @@ abi_errors.append(&mut __abi_errors_2()); }, ], ), + ( + ::std::borrow::ToOwned::to_owned("SameAddress"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("SameAddress"), + inputs: ::std::vec![], + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("SignaledReadyForWrongEpochNumber"), ::std::vec![ @@ -8919,6 +9521,15 @@ abi_errors.append(&mut __abi_errors_2()); }, ], ), + ( + ::std::borrow::ToOwned::to_owned("ZeroAddress"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("ZeroAddress"), + inputs: ::std::vec![], + }, + ], + ), ] ) } @@ -9102,13 +9713,23 @@ abi_errors.append(&mut __abi_errors_2()); .method_hash([243, 184, 119, 121], realm_id) .expect("method not found (this should never happen)") } + ///Calls the contract's `approve` (0x095ea7b3) function + pub fn approve( + &self, + approved: ::ethers::core::types::Address, + token_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([9, 94, 167, 179], (approved, token_id)) + .expect("method not found (this should never happen)") + } ///Calls the contract's `balanceOf` (0x70a08231) function pub fn balance_of( &self, - staker_address: ::ethers::core::types::Address, + owner: ::ethers::core::types::Address, ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([112, 160, 130, 49], staker_address) + .method_hash([112, 160, 130, 49], owner) .expect("method not found (this should never happen)") } ///Calls the contract's `calculateRewardsPerDay` (0x9be372e0) function @@ -9423,10 +10044,22 @@ abi_errors.append(&mut __abi_errors_2()); &self, ) -> ::ethers::contract::builders::ContractCall< M, - ::std::vec::Vec<::ethers::core::types::Address>, + ::std::vec::Vec<::ethers::core::types::Address>, + > { + self.0 + .method_hash([243, 81, 58, 55], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getApproved` (0x081812fc) function + pub fn get_approved( + &self, + token_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::ethers::core::types::Address, > { self.0 - .method_hash([243, 81, 58, 55], ()) + .method_hash([8, 24, 18, 252], token_id) .expect("method not found (this should never happen)") } ///Calls the contract's `getAttestedPubKey` (0xe9332ea7) function @@ -9473,6 +10106,19 @@ abi_errors.append(&mut __abi_errors_2()); .method_hash([140, 60, 207, 76], validator_address) .expect("method not found (this should never happen)") } + ///Calls the contract's `getEmptyStakeRecordSlots` (0xa6f67c51) function + pub fn get_empty_stake_record_slots( + &self, + user_staker_address: ::ethers::core::types::Address, + operator_staker_address: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [166, 246, 124, 81], + (user_staker_address, operator_staker_address), + ) + .expect("method not found (this should never happen)") + } ///Calls the contract's `getKeySet` (0xa305e5fe) function pub fn get_key_set( &self, @@ -9792,7 +10438,7 @@ abi_errors.append(&mut __abi_errors_2()); .method_hash([70, 21, 213, 233], node_count) .expect("method not found (this should never happen)") } - ///Calls the contract's `getTimelockInEpoch` (0xf16bbde3) function + ///Calls the contract's `getTimelockInEpoch` (0x2db912e4) function pub fn get_timelock_in_epoch( &self, staker_address: ::ethers::core::types::Address, @@ -9801,7 +10447,7 @@ abi_errors.append(&mut __abi_errors_2()); ) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash( - [241, 107, 189, 227], + [45, 185, 18, 228], (staker_address, stake_record, reward_epoch_number), ) .expect("method not found (this should never happen)") @@ -9825,7 +10471,7 @@ abi_errors.append(&mut __abi_errors_2()); .method_hash([75, 148, 245, 14], ()) .expect("method not found (this should never happen)") } - ///Calls the contract's `getTokensStaked` (0x5e91a664) function + ///Calls the contract's `getTokensStaked` (0x0fd78304) function pub fn get_tokens_staked( &self, staker_address: ::ethers::core::types::Address, @@ -9834,7 +10480,7 @@ abi_errors.append(&mut __abi_errors_2()); ) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash( - [94, 145, 166, 100], + [15, 215, 131, 4], (staker_address, stake_record, reward_epoch_number), ) .expect("method not found (this should never happen)") @@ -10084,6 +10730,16 @@ abi_errors.append(&mut __abi_errors_2()); .method_hash([38, 252, 111, 155], (realm_id, staker_address)) .expect("method not found (this should never happen)") } + ///Calls the contract's `isApprovedForAll` (0xe985e9c5) function + pub fn is_approved_for_all( + &self, + owner: ::ethers::core::types::Address, + operator: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([233, 133, 233, 197], (owner, operator)) + .expect("method not found (this should never happen)") + } ///Calls the contract's `isReadyForNextEpoch` (0x7fecc451) function pub fn is_ready_for_next_epoch( &self, @@ -10322,6 +10978,27 @@ abi_errors.append(&mut __abi_errors_2()); .method_hash([141, 165, 203, 91], ()) .expect("method not found (this should never happen)") } + ///Calls the contract's `ownerOf` (0x6352211e) function + pub fn owner_of( + &self, + token_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::ethers::core::types::Address, + > { + self.0 + .method_hash([99, 82, 33, 30], token_id) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `ownershipChange` (0x23857d51) function + pub fn ownership_change( + &self, + token_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([35, 133, 125, 81], token_id) + .expect("method not found (this should never happen)") + } ///Calls the contract's `permittedRealmsForValidator` (0xe718ff4c) function pub fn permitted_realms_for_validator( &self, @@ -10462,6 +11139,39 @@ abi_errors.append(&mut __abi_errors_2()); .method_hash([198, 240, 76, 187], realm_id) .expect("method not found (this should never happen)") } + ///Calls the contract's `safeTransferFrom` (0x42842e0e) function + pub fn safe_transfer_from( + &self, + from: ::ethers::core::types::Address, + to: ::ethers::core::types::Address, + token_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([66, 132, 46, 14], (from, to, token_id)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `safeTransferFrom` (0xb88d4fde) function + pub fn safe_transfer_from_with_from_and_to_and_data( + &self, + from: ::ethers::core::types::Address, + to: ::ethers::core::types::Address, + token_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([184, 141, 79, 222], (from, to, token_id, data)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `setApprovalForAll` (0xa22cb465) function + pub fn set_approval_for_all( + &self, + operator: ::ethers::core::types::Address, + approved: bool, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([162, 44, 180, 101], (operator, approved)) + .expect("method not found (this should never happen)") + } ///Calls the contract's `setComplaintConfig` (0x440e8d22) function pub fn set_complaint_config( &self, @@ -10713,6 +11423,15 @@ abi_errors.append(&mut __abi_errors_2()); ) .expect("method not found (this should never happen)") } + ///Calls the contract's `stakeBalanceOf` (0xaf46aa08) function + pub fn stake_balance_of( + &self, + staker_address: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([175, 70, 170, 8], staker_address) + .expect("method not found (this should never happen)") + } ///Calls the contract's `stakerToValidatorsTheyStakedTo` (0x6817d36e) function pub fn staker_to_validators_they_staked_to( &self, @@ -10743,6 +11462,44 @@ abi_errors.append(&mut __abi_errors_2()); .method_hash([1, 255, 201, 167], interface_id) .expect("method not found (this should never happen)") } + ///Calls the contract's `tokenOfOwnerByIndex` (0x2f745c59) function + pub fn token_of_owner_by_index( + &self, + owner: ::ethers::core::types::Address, + index: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([47, 116, 92, 89], (owner, index)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `tokenToStakeRecord` (0xf0e2d9b5) function + pub fn token_to_stake_record( + &self, + token_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([240, 226, 217, 181], token_id) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `totalSupply` (0x18160ddd) function + pub fn total_supply( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([24, 22, 13, 221], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `transferFrom` (0x23b872dd) function + pub fn transfer_from( + &self, + from: ::ethers::core::types::Address, + to: ::ethers::core::types::Address, + token_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([35, 184, 114, 221], (from, to, token_id)) + .expect("method not found (this should never happen)") + } ///Calls the contract's `transferOwnership` (0xf2fde38b) function pub fn transfer_ownership( &self, @@ -10830,6 +11587,26 @@ abi_errors.append(&mut __abi_errors_2()); > { self.0.event() } + ///Gets the contract's `Approval` event + pub fn approval_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + ApprovalFilter, + > { + self.0.event() + } + ///Gets the contract's `ApprovalForAll` event + pub fn approval_for_all_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + ApprovalForAllFilter, + > { + self.0.event() + } ///Gets the contract's `AttestedWalletRegistered` event pub fn attested_wallet_registered_filter( &self, @@ -11116,6 +11893,16 @@ abi_errors.append(&mut __abi_errors_2()); > { self.0.event() } + ///Gets the contract's `Transfer` event + pub fn transfer_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + TransferFilter, + > { + self.0.event() + } ///Gets the contract's `TrustedForwarderSet` event pub fn trusted_forwarder_set_filter( &self, @@ -11688,6 +12475,42 @@ abi_errors.append(&mut __abi_errors_2()); pub struct CouldNotMapNodeAddressToStakerAddress { pub node_address: ::ethers::core::types::Address, } + ///Custom Error type `ERC721ReceiverRejectedTokens` with signature `ERC721ReceiverRejectedTokens()` and selector `0x9e64a6c4` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror( + name = "ERC721ReceiverRejectedTokens", + abi = "ERC721ReceiverRejectedTokens()" + )] + pub struct ERC721ReceiverRejectedTokens; + ///Custom Error type `ERC721TransferToNonERC721ReceiverImplementer` with signature `ERC721TransferToNonERC721ReceiverImplementer()` and selector `0x1ad78a40` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror( + name = "ERC721TransferToNonERC721ReceiverImplementer", + abi = "ERC721TransferToNonERC721ReceiverImplementer()" + )] + pub struct ERC721TransferToNonERC721ReceiverImplementer; ///Custom Error type `IncorrectFacetCutAction` with signature `IncorrectFacetCutAction(uint8)` and selector `0x7fe9a41e` #[derive( Clone, @@ -12068,6 +12891,21 @@ abi_errors.append(&mut __abi_errors_2()); abi = "NodeAddressNotFoundForStaker()" )] pub struct NodeAddressNotFoundForStaker; + ///Custom Error type `NotApprovedOrOwner` with signature `NotApprovedOrOwner()` and selector `0xe433766c` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror(name = "NotApprovedOrOwner", abi = "NotApprovedOrOwner()")] + pub struct NotApprovedOrOwner; ///Custom Error type `NotContractOwner` with signature `NotContractOwner(address,address)` and selector `0xff4127cb` #[derive( Clone, @@ -12172,6 +13010,21 @@ abi_errors.append(&mut __abi_errors_2()); pub next_ready_validator_count: ::ethers::core::types::U256, pub minimum_validator_count_to_be_ready: ::ethers::core::types::U256, } + ///Custom Error type `NotOwner` with signature `NotOwner()` and selector `0x30cd7471` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror(name = "NotOwner", abi = "NotOwner()")] + pub struct NotOwner; ///Custom Error type `RealmIdNotFound` with signature `RealmIdNotFound(address)` and selector `0x4d1e0bab` #[derive( Clone, @@ -12224,6 +13077,21 @@ abi_errors.append(&mut __abi_errors_2()); )] #[etherror(name = "RewardsMustBeClaimed", abi = "RewardsMustBeClaimed()")] pub struct RewardsMustBeClaimed; + ///Custom Error type `SameAddress` with signature `SameAddress()` and selector `0x367558c3` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror(name = "SameAddress", abi = "SameAddress()")] + pub struct SameAddress; ///Custom Error type `SignaledReadyForWrongEpochNumber` with signature `SignaledReadyForWrongEpochNumber(uint256,uint256)` and selector `0x068cde2a` #[derive( Clone, @@ -12552,6 +13420,21 @@ abi_errors.append(&mut __abi_errors_2()); pub struct ValueMustBeNonzero { pub value_name: ::std::string::String, } + ///Custom Error type `ZeroAddress` with signature `ZeroAddress()` and selector `0xd92e233d` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror(name = "ZeroAddress", abi = "ZeroAddress()")] + pub struct ZeroAddress; ///Container type for all of the contract's custom errors #[derive( Clone, @@ -12599,6 +13482,10 @@ abi_errors.append(&mut __abi_errors_2()); CannotWithdrawZero(CannotWithdrawZero), CheckpointAheadOfCurrentEpoch(CheckpointAheadOfCurrentEpoch), CouldNotMapNodeAddressToStakerAddress(CouldNotMapNodeAddressToStakerAddress), + ERC721ReceiverRejectedTokens(ERC721ReceiverRejectedTokens), + ERC721TransferToNonERC721ReceiverImplementer( + ERC721TransferToNonERC721ReceiverImplementer, + ), IncorrectFacetCutAction(IncorrectFacetCutAction), InitializationFunctionReverted(InitializationFunctionReverted), InsufficientSelfStake(InsufficientSelfStake), @@ -12624,6 +13511,7 @@ abi_errors.append(&mut __abi_errors_2()); NoEmptyStakingSlot(NoEmptyStakingSlot), NoSelectorsProvidedForFacetForCut(NoSelectorsProvidedForFacetForCut), NodeAddressNotFoundForStaker(NodeAddressNotFoundForStaker), + NotApprovedOrOwner(NotApprovedOrOwner), NotContractOwner(NotContractOwner), NotEnoughTimeElapsedForTimeoutSinceLastEpoch( NotEnoughTimeElapsedForTimeoutSinceLastEpoch, @@ -12631,9 +13519,11 @@ abi_errors.append(&mut __abi_errors_2()); NotEnoughTimeElapsedSinceLastEpoch(NotEnoughTimeElapsedSinceLastEpoch), NotEnoughValidatorsInNextEpoch(NotEnoughValidatorsInNextEpoch), NotEnoughValidatorsReadyForNextEpoch(NotEnoughValidatorsReadyForNextEpoch), + NotOwner(NotOwner), RealmIdNotFound(RealmIdNotFound), RemoveFacetAddressMustBeZeroAddress(RemoveFacetAddressMustBeZeroAddress), RewardsMustBeClaimed(RewardsMustBeClaimed), + SameAddress(SameAddress), SignaledReadyForWrongEpochNumber(SignaledReadyForWrongEpochNumber), SlashingMustOccurInSameRealm(SlashingMustOccurInSameRealm), StakeAmountNotMet(StakeAmountNotMet), @@ -12651,6 +13541,7 @@ abi_errors.append(&mut __abi_errors_2()); ValidatorNotRegistered(ValidatorNotRegistered), ValidatorRegisterAttestedWalletDisabled(ValidatorRegisterAttestedWalletDisabled), ValueMustBeNonzero(ValueMustBeNonzero), + ZeroAddress(ZeroAddress), /// The standard solidity revert string, with selector /// Error(string) -- 0x08c379a0 RevertString(::std::string::String), @@ -12796,6 +13687,16 @@ abi_errors.append(&mut __abi_errors_2()); ) { return Ok(Self::CouldNotMapNodeAddressToStakerAddress(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::ERC721ReceiverRejectedTokens(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::ERC721TransferToNonERC721ReceiverImplementer(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -12907,6 +13808,11 @@ abi_errors.append(&mut __abi_errors_2()); ) { return Ok(Self::NodeAddressNotFoundForStaker(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::NotApprovedOrOwner(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -12932,6 +13838,11 @@ abi_errors.append(&mut __abi_errors_2()); ) { return Ok(Self::NotEnoughValidatorsReadyForNextEpoch(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::NotOwner(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -12947,6 +13858,11 @@ abi_errors.append(&mut __abi_errors_2()); ) { return Ok(Self::RewardsMustBeClaimed(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SameAddress(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -13032,6 +13948,11 @@ abi_errors.append(&mut __abi_errors_2()); ) { return Ok(Self::ValueMustBeNonzero(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::ZeroAddress(decoded)); + } Err(::ethers::core::abi::Error::InvalidData.into()) } } @@ -13113,6 +14034,12 @@ abi_errors.append(&mut __abi_errors_2()); Self::CouldNotMapNodeAddressToStakerAddress(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::ERC721ReceiverRejectedTokens(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ERC721TransferToNonERC721ReceiverImplementer(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::IncorrectFacetCutAction(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -13176,6 +14103,9 @@ abi_errors.append(&mut __abi_errors_2()); Self::NodeAddressNotFoundForStaker(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::NotApprovedOrOwner(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::NotContractOwner(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -13191,6 +14121,9 @@ abi_errors.append(&mut __abi_errors_2()); Self::NotEnoughValidatorsReadyForNextEpoch(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::NotOwner(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::RealmIdNotFound(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -13200,6 +14133,9 @@ abi_errors.append(&mut __abi_errors_2()); Self::RewardsMustBeClaimed(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::SameAddress(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::SignaledReadyForWrongEpochNumber(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -13251,6 +14187,9 @@ abi_errors.append(&mut __abi_errors_2()); Self::ValueMustBeNonzero(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::ZeroAddress(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), } } @@ -13359,6 +14298,14 @@ abi_errors.append(&mut __abi_errors_2()); == ::selector() => { true } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } _ if selector == ::selector() => { true @@ -13441,6 +14388,10 @@ abi_errors.append(&mut __abi_errors_2()); == ::selector() => { true } + _ if selector + == ::selector() => { + true + } _ if selector == ::selector() => { true @@ -13461,6 +14412,8 @@ abi_errors.append(&mut __abi_errors_2()); == ::selector() => { true } + _ if selector + == ::selector() => true, _ if selector == ::selector() => { true @@ -13473,6 +14426,8 @@ abi_errors.append(&mut __abi_errors_2()); == ::selector() => { true } + _ if selector + == ::selector() => true, _ if selector == ::selector() => { true @@ -13541,6 +14496,8 @@ abi_errors.append(&mut __abi_errors_2()); == ::selector() => { true } + _ if selector + == ::selector() => true, _ => false, } } @@ -13615,6 +14572,12 @@ abi_errors.append(&mut __abi_errors_2()); Self::CouldNotMapNodeAddressToStakerAddress(element) => { ::core::fmt::Display::fmt(element, f) } + Self::ERC721ReceiverRejectedTokens(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::ERC721TransferToNonERC721ReceiverImplementer(element) => { + ::core::fmt::Display::fmt(element, f) + } Self::IncorrectFacetCutAction(element) => { ::core::fmt::Display::fmt(element, f) } @@ -13672,6 +14635,9 @@ abi_errors.append(&mut __abi_errors_2()); Self::NodeAddressNotFoundForStaker(element) => { ::core::fmt::Display::fmt(element, f) } + Self::NotApprovedOrOwner(element) => { + ::core::fmt::Display::fmt(element, f) + } Self::NotContractOwner(element) => ::core::fmt::Display::fmt(element, f), Self::NotEnoughTimeElapsedForTimeoutSinceLastEpoch(element) => { ::core::fmt::Display::fmt(element, f) @@ -13685,6 +14651,7 @@ abi_errors.append(&mut __abi_errors_2()); Self::NotEnoughValidatorsReadyForNextEpoch(element) => { ::core::fmt::Display::fmt(element, f) } + Self::NotOwner(element) => ::core::fmt::Display::fmt(element, f), Self::RealmIdNotFound(element) => ::core::fmt::Display::fmt(element, f), Self::RemoveFacetAddressMustBeZeroAddress(element) => { ::core::fmt::Display::fmt(element, f) @@ -13692,6 +14659,7 @@ abi_errors.append(&mut __abi_errors_2()); Self::RewardsMustBeClaimed(element) => { ::core::fmt::Display::fmt(element, f) } + Self::SameAddress(element) => ::core::fmt::Display::fmt(element, f), Self::SignaledReadyForWrongEpochNumber(element) => { ::core::fmt::Display::fmt(element, f) } @@ -13737,6 +14705,7 @@ abi_errors.append(&mut __abi_errors_2()); Self::ValueMustBeNonzero(element) => { ::core::fmt::Display::fmt(element, f) } + Self::ZeroAddress(element) => ::core::fmt::Display::fmt(element, f), Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), } } @@ -13880,6 +14849,17 @@ abi_errors.append(&mut __abi_errors_2()); Self::CouldNotMapNodeAddressToStakerAddress(value) } } + impl ::core::convert::From for StakingErrors { + fn from(value: ERC721ReceiverRejectedTokens) -> Self { + Self::ERC721ReceiverRejectedTokens(value) + } + } + impl ::core::convert::From + for StakingErrors { + fn from(value: ERC721TransferToNonERC721ReceiverImplementer) -> Self { + Self::ERC721TransferToNonERC721ReceiverImplementer(value) + } + } impl ::core::convert::From for StakingErrors { fn from(value: IncorrectFacetCutAction) -> Self { Self::IncorrectFacetCutAction(value) @@ -13990,6 +14970,11 @@ abi_errors.append(&mut __abi_errors_2()); Self::NodeAddressNotFoundForStaker(value) } } + impl ::core::convert::From for StakingErrors { + fn from(value: NotApprovedOrOwner) -> Self { + Self::NotApprovedOrOwner(value) + } + } impl ::core::convert::From for StakingErrors { fn from(value: NotContractOwner) -> Self { Self::NotContractOwner(value) @@ -14016,6 +15001,11 @@ abi_errors.append(&mut __abi_errors_2()); Self::NotEnoughValidatorsReadyForNextEpoch(value) } } + impl ::core::convert::From for StakingErrors { + fn from(value: NotOwner) -> Self { + Self::NotOwner(value) + } + } impl ::core::convert::From for StakingErrors { fn from(value: RealmIdNotFound) -> Self { Self::RealmIdNotFound(value) @@ -14031,6 +15021,11 @@ abi_errors.append(&mut __abi_errors_2()); Self::RewardsMustBeClaimed(value) } } + impl ::core::convert::From for StakingErrors { + fn from(value: SameAddress) -> Self { + Self::SameAddress(value) + } + } impl ::core::convert::From for StakingErrors { fn from(value: SignaledReadyForWrongEpochNumber) -> Self { Self::SignaledReadyForWrongEpochNumber(value) @@ -14117,6 +15112,49 @@ abi_errors.append(&mut __abi_errors_2()); Self::ValueMustBeNonzero(value) } } + impl ::core::convert::From for StakingErrors { + fn from(value: ZeroAddress) -> Self { + Self::ZeroAddress(value) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "AdvancedEpoch", abi = "AdvancedEpoch(uint256,uint256)")] + pub struct AdvancedEpochFilter { + pub realm_id: ::ethers::core::types::U256, + pub epoch_number: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] + pub struct ApprovalFilter { + #[ethevent(indexed)] + pub owner: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub approved: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub token_id: ::ethers::core::types::U256, + } #[derive( Clone, ::ethers::contract::EthEvent, @@ -14129,10 +15167,13 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "AdvancedEpoch", abi = "AdvancedEpoch(uint256,uint256)")] - pub struct AdvancedEpochFilter { - pub realm_id: ::ethers::core::types::U256, - pub epoch_number: ::ethers::core::types::U256, + #[ethevent(name = "ApprovalForAll", abi = "ApprovalForAll(address,address,bool)")] + pub struct ApprovalForAllFilter { + #[ethevent(indexed)] + pub owner: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub operator: ::ethers::core::types::Address, + pub approved: bool, } #[derive( Clone, @@ -14686,6 +15727,27 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] + #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] + pub struct TransferFilter { + #[ethevent(indexed)] + pub from: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub to: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub token_id: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] #[ethevent(name = "TrustedForwarderSet", abi = "TrustedForwarderSet(address)")] pub struct TrustedForwarderSetFilter { pub new_trusted_forwarder: ::ethers::core::types::Address, @@ -14881,6 +15943,8 @@ abi_errors.append(&mut __abi_errors_2()); )] pub enum StakingEvents { AdvancedEpochFilter(AdvancedEpochFilter), + ApprovalFilter(ApprovalFilter), + ApprovalForAllFilter(ApprovalForAllFilter), AttestedWalletRegisteredFilter(AttestedWalletRegisteredFilter), ClearOfflinePhaseDataFilter(ClearOfflinePhaseDataFilter), ComplaintConfigSetFilter(ComplaintConfigSetFilter), @@ -14910,6 +15974,7 @@ abi_errors.append(&mut __abi_errors_2()); StakedFilter(StakedFilter), StakingTokenSetFilter(StakingTokenSetFilter), StateChangedFilter(StateChangedFilter), + TransferFilter(TransferFilter), TrustedForwarderSetFilter(TrustedForwarderSetFilter), ValidatorBannedFilter(ValidatorBannedFilter), ValidatorCommissionClaimedFilter(ValidatorCommissionClaimedFilter), @@ -14928,6 +15993,12 @@ abi_errors.append(&mut __abi_errors_2()); if let Ok(decoded) = AdvancedEpochFilter::decode_log(log) { return Ok(StakingEvents::AdvancedEpochFilter(decoded)); } + if let Ok(decoded) = ApprovalFilter::decode_log(log) { + return Ok(StakingEvents::ApprovalFilter(decoded)); + } + if let Ok(decoded) = ApprovalForAllFilter::decode_log(log) { + return Ok(StakingEvents::ApprovalForAllFilter(decoded)); + } if let Ok(decoded) = AttestedWalletRegisteredFilter::decode_log(log) { return Ok(StakingEvents::AttestedWalletRegisteredFilter(decoded)); } @@ -15015,6 +16086,9 @@ abi_errors.append(&mut __abi_errors_2()); if let Ok(decoded) = StateChangedFilter::decode_log(log) { return Ok(StakingEvents::StateChangedFilter(decoded)); } + if let Ok(decoded) = TransferFilter::decode_log(log) { + return Ok(StakingEvents::TransferFilter(decoded)); + } if let Ok(decoded) = TrustedForwarderSetFilter::decode_log(log) { return Ok(StakingEvents::TrustedForwarderSetFilter(decoded)); } @@ -15054,6 +16128,10 @@ abi_errors.append(&mut __abi_errors_2()); Self::AdvancedEpochFilter(element) => { ::core::fmt::Display::fmt(element, f) } + Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::ApprovalForAllFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } Self::AttestedWalletRegisteredFilter(element) => { ::core::fmt::Display::fmt(element, f) } @@ -15131,6 +16209,7 @@ abi_errors.append(&mut __abi_errors_2()); Self::StateChangedFilter(element) => { ::core::fmt::Display::fmt(element, f) } + Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f), Self::TrustedForwarderSetFilter(element) => { ::core::fmt::Display::fmt(element, f) } @@ -15167,6 +16246,16 @@ abi_errors.append(&mut __abi_errors_2()); Self::AdvancedEpochFilter(value) } } + impl ::core::convert::From for StakingEvents { + fn from(value: ApprovalFilter) -> Self { + Self::ApprovalFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: ApprovalForAllFilter) -> Self { + Self::ApprovalForAllFilter(value) + } + } impl ::core::convert::From for StakingEvents { fn from(value: AttestedWalletRegisteredFilter) -> Self { Self::AttestedWalletRegisteredFilter(value) @@ -15312,6 +16401,11 @@ abi_errors.append(&mut __abi_errors_2()); Self::StateChangedFilter(value) } } + impl ::core::convert::From for StakingEvents { + fn from(value: TransferFilter) -> Self { + Self::TransferFilter(value) + } + } impl ::core::convert::From for StakingEvents { fn from(value: TrustedForwarderSetFilter) -> Self { Self::TrustedForwarderSetFilter(value) @@ -15588,6 +16682,24 @@ abi_errors.append(&mut __abi_errors_2()); pub struct AdvanceEpochCall { pub realm_id: ::ethers::core::types::U256, } + ///Container type for all input parameters for the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "approve", abi = "approve(address,uint256)")] + pub struct ApproveCall { + pub approved: ::ethers::core::types::Address, + pub token_id: ::ethers::core::types::U256, + } ///Container type for all input parameters for the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` #[derive( Clone, @@ -15603,7 +16715,7 @@ abi_errors.append(&mut __abi_errors_2()); )] #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] pub struct BalanceOfCall { - pub staker_address: ::ethers::core::types::Address, + pub owner: ::ethers::core::types::Address, } ///Container type for all input parameters for the `calculateRewardsPerDay` function with signature `calculateRewardsPerDay((uint256,uint256,address[],uint256))` and selector `0x9be372e0` #[derive( @@ -16179,6 +17291,23 @@ abi_errors.append(&mut __abi_errors_2()); )] #[ethcall(name = "getAllValidators", abi = "getAllValidators()")] pub struct GetAllValidatorsCall; + ///Container type for all input parameters for the `getApproved` function with signature `getApproved(uint256)` and selector `0x081812fc` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "getApproved", abi = "getApproved(uint256)")] + pub struct GetApprovedCall { + pub token_id: ::ethers::core::types::U256, + } ///Container type for all input parameters for the `getAttestedPubKey` function with signature `getAttestedPubKey(address)` and selector `0xe9332ea7` #[derive( Clone, @@ -16258,6 +17387,27 @@ abi_errors.append(&mut __abi_errors_2()); pub struct GetDelegatedStakersWithUnfreezingStakesCountCall { pub validator_address: ::ethers::core::types::Address, } + ///Container type for all input parameters for the `getEmptyStakeRecordSlots` function with signature `getEmptyStakeRecordSlots(address,address)` and selector `0xa6f67c51` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "getEmptyStakeRecordSlots", + abi = "getEmptyStakeRecordSlots(address,address)" + )] + pub struct GetEmptyStakeRecordSlotsCall { + pub user_staker_address: ::ethers::core::types::Address, + pub operator_staker_address: ::ethers::core::types::Address, + } ///Container type for all input parameters for the `getKeySet` function with signature `getKeySet(string)` and selector `0xa305e5fe` #[derive( Clone, @@ -16813,7 +17963,7 @@ abi_errors.append(&mut __abi_errors_2()); pub struct GetThresholdCall { pub node_count: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getTimelockInEpoch` function with signature `getTimelockInEpoch(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address),uint256)` and selector `0xf16bbde3` + ///Container type for all input parameters for the `getTimelockInEpoch` function with signature `getTimelockInEpoch(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)` and selector `0x2db912e4` #[derive( Clone, ::ethers::contract::EthCall, @@ -16828,7 +17978,7 @@ abi_errors.append(&mut __abi_errors_2()); )] #[ethcall( name = "getTimelockInEpoch", - abi = "getTimelockInEpoch(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address),uint256)" + abi = "getTimelockInEpoch(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)" )] pub struct GetTimelockInEpochCall { pub staker_address: ::ethers::core::types::Address, @@ -16865,7 +18015,7 @@ abi_errors.append(&mut __abi_errors_2()); )] #[ethcall(name = "getTokenPrice", abi = "getTokenPrice()")] pub struct GetTokenPriceCall; - ///Container type for all input parameters for the `getTokensStaked` function with signature `getTokensStaked(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address),uint256)` and selector `0x5e91a664` + ///Container type for all input parameters for the `getTokensStaked` function with signature `getTokensStaked(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)` and selector `0x0fd78304` #[derive( Clone, ::ethers::contract::EthCall, @@ -16880,7 +18030,7 @@ abi_errors.append(&mut __abi_errors_2()); )] #[ethcall( name = "getTokensStaked", - abi = "getTokensStaked(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address),uint256)" + abi = "getTokensStaked(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)" )] pub struct GetTokensStakedCall { pub staker_address: ::ethers::core::types::Address, @@ -17299,6 +18449,24 @@ abi_errors.append(&mut __abi_errors_2()); pub realm_id: ::ethers::core::types::U256, pub staker_address: ::ethers::core::types::Address, } + ///Container type for all input parameters for the `isApprovedForAll` function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "isApprovedForAll", abi = "isApprovedForAll(address,address)")] + pub struct IsApprovedForAllCall { + pub owner: ::ethers::core::types::Address, + pub operator: ::ethers::core::types::Address, + } ///Container type for all input parameters for the `isReadyForNextEpoch` function with signature `isReadyForNextEpoch(uint256)` and selector `0x7fecc451` #[derive( Clone, @@ -17726,6 +18894,40 @@ abi_errors.append(&mut __abi_errors_2()); )] #[ethcall(name = "owner", abi = "owner()")] pub struct OwnerCall; + ///Container type for all input parameters for the `ownerOf` function with signature `ownerOf(uint256)` and selector `0x6352211e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "ownerOf", abi = "ownerOf(uint256)")] + pub struct OwnerOfCall { + pub token_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `ownershipChange` function with signature `ownershipChange(uint256)` and selector `0x23857d51` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "ownershipChange", abi = "ownershipChange(uint256)")] + pub struct OwnershipChangeCall { + pub token_id: ::ethers::core::types::U256, + } ///Container type for all input parameters for the `permittedRealmsForValidator` function with signature `permittedRealmsForValidator(address)` and selector `0xe718ff4c` #[derive( Clone, @@ -17969,6 +19171,69 @@ abi_errors.append(&mut __abi_errors_2()); pub struct RequestToLeaveAsNodeCall { pub realm_id: ::ethers::core::types::U256, } + ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256)` and selector `0x42842e0e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "safeTransferFrom", + abi = "safeTransferFrom(address,address,uint256)" + )] + pub struct SafeTransferFromCall { + pub from: ::ethers::core::types::Address, + pub to: ::ethers::core::types::Address, + pub token_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256,bytes)` and selector `0xb88d4fde` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "safeTransferFrom", + abi = "safeTransferFrom(address,address,uint256,bytes)" + )] + pub struct SafeTransferFromWithFromAndToAndDataCall { + pub from: ::ethers::core::types::Address, + pub to: ::ethers::core::types::Address, + pub token_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `setApprovalForAll` function with signature `setApprovalForAll(address,bool)` and selector `0xa22cb465` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "setApprovalForAll", abi = "setApprovalForAll(address,bool)")] + pub struct SetApprovalForAllCall { + pub operator: ::ethers::core::types::Address, + pub approved: bool, + } ///Container type for all input parameters for the `setComplaintConfig` function with signature `setComplaintConfig(uint256,(uint256,uint256,uint256,uint256))` and selector `0x440e8d22` #[derive( Clone, @@ -18441,7 +19706,97 @@ abi_errors.append(&mut __abi_errors_2()); pub stake_record_id: ::ethers::core::types::U256, pub ratio: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `stake` function with signature `stake(uint256,uint256,address)` and selector `0x7628a37d` + ///Container type for all input parameters for the `stake` function with signature `stake(uint256,uint256,address)` and selector `0x7628a37d` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "stake", abi = "stake(uint256,uint256,address)")] + pub struct StakeCall { + pub amount: ::ethers::core::types::U256, + pub time_lock: ::ethers::core::types::U256, + pub operator_staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `stakeBalanceOf` function with signature `stakeBalanceOf(address)` and selector `0xaf46aa08` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "stakeBalanceOf", abi = "stakeBalanceOf(address)")] + pub struct StakeBalanceOfCall { + pub staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `stakerToValidatorsTheyStakedTo` function with signature `stakerToValidatorsTheyStakedTo(address)` and selector `0x6817d36e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "stakerToValidatorsTheyStakedTo", + abi = "stakerToValidatorsTheyStakedTo(address)" + )] + pub struct StakerToValidatorsTheyStakedToCall { + pub staker: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `state` function with signature `state(uint256)` and selector `0x3e4f49e6` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "state", abi = "state(uint256)")] + pub struct StateCall { + pub realm_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `supportsInterface` function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "supportsInterface", abi = "supportsInterface(bytes4)")] + pub struct SupportsInterfaceCall { + pub interface_id: [u8; 4], + } + ///Container type for all input parameters for the `tokenOfOwnerByIndex` function with signature `tokenOfOwnerByIndex(address,uint256)` and selector `0x2f745c59` #[derive( Clone, ::ethers::contract::EthCall, @@ -18454,13 +19809,15 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "stake", abi = "stake(uint256,uint256,address)")] - pub struct StakeCall { - pub amount: ::ethers::core::types::U256, - pub time_lock: ::ethers::core::types::U256, - pub operator_staker_address: ::ethers::core::types::Address, + #[ethcall( + name = "tokenOfOwnerByIndex", + abi = "tokenOfOwnerByIndex(address,uint256)" + )] + pub struct TokenOfOwnerByIndexCall { + pub owner: ::ethers::core::types::Address, + pub index: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `stakerToValidatorsTheyStakedTo` function with signature `stakerToValidatorsTheyStakedTo(address)` and selector `0x6817d36e` + ///Container type for all input parameters for the `tokenToStakeRecord` function with signature `tokenToStakeRecord(uint256)` and selector `0xf0e2d9b5` #[derive( Clone, ::ethers::contract::EthCall, @@ -18473,14 +19830,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "stakerToValidatorsTheyStakedTo", - abi = "stakerToValidatorsTheyStakedTo(address)" - )] - pub struct StakerToValidatorsTheyStakedToCall { - pub staker: ::ethers::core::types::Address, + #[ethcall(name = "tokenToStakeRecord", abi = "tokenToStakeRecord(uint256)")] + pub struct TokenToStakeRecordCall { + pub token_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `state` function with signature `state(uint256)` and selector `0x3e4f49e6` + ///Container type for all input parameters for the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd` #[derive( Clone, ::ethers::contract::EthCall, @@ -18493,11 +19847,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "state", abi = "state(uint256)")] - pub struct StateCall { - pub realm_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `supportsInterface` function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7` + #[ethcall(name = "totalSupply", abi = "totalSupply()")] + pub struct TotalSupplyCall; + ///Container type for all input parameters for the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd` #[derive( Clone, ::ethers::contract::EthCall, @@ -18510,9 +19862,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "supportsInterface", abi = "supportsInterface(bytes4)")] - pub struct SupportsInterfaceCall { - pub interface_id: [u8; 4], + #[ethcall(name = "transferFrom", abi = "transferFrom(address,address,uint256)")] + pub struct TransferFromCall { + pub from: ::ethers::core::types::Address, + pub to: ::ethers::core::types::Address, + pub token_id: ::ethers::core::types::U256, } ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b` #[derive( @@ -18668,6 +20022,7 @@ abi_errors.append(&mut __abi_errors_2()); AdminStakeForUser(AdminStakeForUserCall), AdminUnfreezeForUser(AdminUnfreezeForUserCall), AdvanceEpoch(AdvanceEpochCall), + Approve(ApproveCall), BalanceOf(BalanceOfCall), CalculateRewardsPerDay(CalculateRewardsPerDayCall), CalculateStakeWeight(CalculateStakeWeightCall), @@ -18706,6 +20061,7 @@ abi_errors.append(&mut __abi_errors_2()); GetAllReserveValidators(GetAllReserveValidatorsCall), GetAllUnkickedValidators(GetAllUnkickedValidatorsCall), GetAllValidators(GetAllValidatorsCall), + GetApproved(GetApprovedCall), GetAttestedPubKey(GetAttestedPubKeyCall), GetCurrentRealmIdForStakerAddress(GetCurrentRealmIdForStakerAddressCall), GetDelegatedStakersWithUnfreezingStakes( @@ -18714,6 +20070,7 @@ abi_errors.append(&mut __abi_errors_2()); GetDelegatedStakersWithUnfreezingStakesCount( GetDelegatedStakersWithUnfreezingStakesCountCall, ), + GetEmptyStakeRecordSlots(GetEmptyStakeRecordSlotsCall), GetKeySet(GetKeySetCall), GetKeyTypes(GetKeyTypesCall), GetKickedValidators(GetKickedValidatorsCall), @@ -18774,6 +20131,7 @@ abi_errors.append(&mut __abi_errors_2()); IsActiveValidatorByNodeAddressForNextEpochCall, ), IsActiveValidatorForNextEpoch(IsActiveValidatorForNextEpochCall), + IsApprovedForAll(IsApprovedForAllCall), IsReadyForNextEpoch(IsReadyForNextEpochCall), IsRecentValidator(IsRecentValidatorCall), IsRecentValidatorWithRealmId(IsRecentValidatorWithRealmIdCall), @@ -18800,6 +20158,8 @@ abi_errors.append(&mut __abi_errors_2()); NumRealms(NumRealmsCall), OperatorAddressToStakerAddress(OperatorAddressToStakerAddressCall), Owner(OwnerCall), + OwnerOf(OwnerOfCall), + OwnershipChange(OwnershipChangeCall), PermittedRealmsForValidator(PermittedRealmsForValidatorCall), PermittedValidators(PermittedValidatorsCall), Pow(PowCall), @@ -18813,6 +20173,9 @@ abi_errors.append(&mut __abi_errors_2()); RequestToJoinAsNode(RequestToJoinAsNodeCall), RequestToLeave(RequestToLeaveCall), RequestToLeaveAsNode(RequestToLeaveAsNodeCall), + SafeTransferFrom(SafeTransferFromCall), + SafeTransferFromWithFromAndToAndData(SafeTransferFromWithFromAndToAndDataCall), + SetApprovalForAll(SetApprovalForAllCall), SetComplaintConfig(SetComplaintConfigCall), SetConfig(SetConfigCall), SetContractResolver(SetContractResolverCall), @@ -18838,9 +20201,14 @@ abi_errors.append(&mut __abi_errors_2()); SignalReadyForNextEpoch(SignalReadyForNextEpochCall), SplitStakeRecord(SplitStakeRecordCall), Stake(StakeCall), + StakeBalanceOf(StakeBalanceOfCall), StakerToValidatorsTheyStakedTo(StakerToValidatorsTheyStakedToCall), State(StateCall), SupportsInterface(SupportsInterfaceCall), + TokenOfOwnerByIndex(TokenOfOwnerByIndexCall), + TokenToStakeRecord(TokenToStakeRecordCall), + TotalSupply(TotalSupplyCall), + TransferFrom(TransferFromCall), TransferOwnership(TransferOwnershipCall), UnfreezeStake(UnfreezeStakeCall), ValidatorSelfStakeWillExpire(ValidatorSelfStakeWillExpireCall), @@ -18911,6 +20279,11 @@ abi_errors.append(&mut __abi_errors_2()); ) { return Ok(Self::AdvanceEpoch(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::Approve(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -19071,6 +20444,11 @@ abi_errors.append(&mut __abi_errors_2()); ) { return Ok(Self::GetAllValidators(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::GetApproved(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -19091,6 +20469,11 @@ abi_errors.append(&mut __abi_errors_2()); ) { return Ok(Self::GetDelegatedStakersWithUnfreezingStakesCount(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::GetEmptyStakeRecordSlots(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -19371,6 +20754,11 @@ abi_errors.append(&mut __abi_errors_2()); ) { return Ok(Self::IsActiveValidatorForNextEpoch(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::IsApprovedForAll(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -19491,6 +20879,16 @@ abi_errors.append(&mut __abi_errors_2()); ) { return Ok(Self::Owner(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::OwnerOf(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::OwnershipChange(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -19556,6 +20954,21 @@ abi_errors.append(&mut __abi_errors_2()); ) { return Ok(Self::RequestToLeaveAsNode(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SafeTransferFrom(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SafeTransferFromWithFromAndToAndData(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetApprovalForAll(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -19681,6 +21094,11 @@ abi_errors.append(&mut __abi_errors_2()); ) { return Ok(Self::Stake(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::StakeBalanceOf(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -19696,6 +21114,26 @@ abi_errors.append(&mut __abi_errors_2()); ) { return Ok(Self::SupportsInterface(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::TokenOfOwnerByIndex(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::TokenToStakeRecord(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::TotalSupply(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::TransferFrom(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -19770,6 +21208,7 @@ abi_errors.append(&mut __abi_errors_2()); Self::AdvanceEpoch(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::BalanceOf(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -19860,6 +21299,9 @@ abi_errors.append(&mut __abi_errors_2()); Self::GetAllValidators(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::GetApproved(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::GetAttestedPubKey(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -19872,6 +21314,9 @@ abi_errors.append(&mut __abi_errors_2()); Self::GetDelegatedStakersWithUnfreezingStakesCount(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::GetEmptyStakeRecordSlots(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::GetKeySet(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -20040,6 +21485,9 @@ abi_errors.append(&mut __abi_errors_2()); Self::IsActiveValidatorForNextEpoch(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::IsApprovedForAll(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::IsReadyForNextEpoch(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -20108,6 +21556,10 @@ abi_errors.append(&mut __abi_errors_2()); ::ethers::core::abi::AbiEncode::encode(element) } Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::OwnerOf(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::OwnershipChange(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::PermittedRealmsForValidator(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -20145,6 +21597,15 @@ abi_errors.append(&mut __abi_errors_2()); Self::RequestToLeaveAsNode(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::SafeTransferFrom(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SafeTransferFromWithFromAndToAndData(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SetApprovalForAll(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::SetComplaintConfig(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -20218,6 +21679,9 @@ abi_errors.append(&mut __abi_errors_2()); ::ethers::core::abi::AbiEncode::encode(element) } Self::Stake(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::StakeBalanceOf(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::StakerToValidatorsTheyStakedTo(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -20225,6 +21689,18 @@ abi_errors.append(&mut __abi_errors_2()); Self::SupportsInterface(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::TokenOfOwnerByIndex(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TokenToStakeRecord(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TotalSupply(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TransferFrom(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::TransferOwnership(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -20279,6 +21755,7 @@ abi_errors.append(&mut __abi_errors_2()); ::core::fmt::Display::fmt(element, f) } Self::AdvanceEpoch(element) => ::core::fmt::Display::fmt(element, f), + Self::Approve(element) => ::core::fmt::Display::fmt(element, f), Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), Self::CalculateRewardsPerDay(element) => { ::core::fmt::Display::fmt(element, f) @@ -20349,6 +21826,7 @@ abi_errors.append(&mut __abi_errors_2()); ::core::fmt::Display::fmt(element, f) } Self::GetAllValidators(element) => ::core::fmt::Display::fmt(element, f), + Self::GetApproved(element) => ::core::fmt::Display::fmt(element, f), Self::GetAttestedPubKey(element) => ::core::fmt::Display::fmt(element, f), Self::GetCurrentRealmIdForStakerAddress(element) => { ::core::fmt::Display::fmt(element, f) @@ -20359,6 +21837,9 @@ abi_errors.append(&mut __abi_errors_2()); Self::GetDelegatedStakersWithUnfreezingStakesCount(element) => { ::core::fmt::Display::fmt(element, f) } + Self::GetEmptyStakeRecordSlots(element) => { + ::core::fmt::Display::fmt(element, f) + } Self::GetKeySet(element) => ::core::fmt::Display::fmt(element, f), Self::GetKeyTypes(element) => ::core::fmt::Display::fmt(element, f), Self::GetKickedValidators(element) => { @@ -20495,6 +21976,7 @@ abi_errors.append(&mut __abi_errors_2()); Self::IsActiveValidatorForNextEpoch(element) => { ::core::fmt::Display::fmt(element, f) } + Self::IsApprovedForAll(element) => ::core::fmt::Display::fmt(element, f), Self::IsReadyForNextEpoch(element) => { ::core::fmt::Display::fmt(element, f) } @@ -20545,6 +22027,8 @@ abi_errors.append(&mut __abi_errors_2()); ::core::fmt::Display::fmt(element, f) } Self::Owner(element) => ::core::fmt::Display::fmt(element, f), + Self::OwnerOf(element) => ::core::fmt::Display::fmt(element, f), + Self::OwnershipChange(element) => ::core::fmt::Display::fmt(element, f), Self::PermittedRealmsForValidator(element) => { ::core::fmt::Display::fmt(element, f) } @@ -20572,6 +22056,11 @@ abi_errors.append(&mut __abi_errors_2()); Self::RequestToLeaveAsNode(element) => { ::core::fmt::Display::fmt(element, f) } + Self::SafeTransferFrom(element) => ::core::fmt::Display::fmt(element, f), + Self::SafeTransferFromWithFromAndToAndData(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::SetApprovalForAll(element) => ::core::fmt::Display::fmt(element, f), Self::SetComplaintConfig(element) => { ::core::fmt::Display::fmt(element, f) } @@ -20623,11 +22112,20 @@ abi_errors.append(&mut __abi_errors_2()); } Self::SplitStakeRecord(element) => ::core::fmt::Display::fmt(element, f), Self::Stake(element) => ::core::fmt::Display::fmt(element, f), + Self::StakeBalanceOf(element) => ::core::fmt::Display::fmt(element, f), Self::StakerToValidatorsTheyStakedTo(element) => { ::core::fmt::Display::fmt(element, f) } Self::State(element) => ::core::fmt::Display::fmt(element, f), Self::SupportsInterface(element) => ::core::fmt::Display::fmt(element, f), + Self::TokenOfOwnerByIndex(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TokenToStakeRecord(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TotalSupply(element) => ::core::fmt::Display::fmt(element, f), + Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f), Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), Self::UnfreezeStake(element) => ::core::fmt::Display::fmt(element, f), Self::ValidatorSelfStakeWillExpire(element) => { @@ -20700,6 +22198,11 @@ abi_errors.append(&mut __abi_errors_2()); Self::AdvanceEpoch(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: ApproveCall) -> Self { + Self::Approve(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: BalanceOfCall) -> Self { Self::BalanceOf(value) @@ -20863,6 +22366,11 @@ abi_errors.append(&mut __abi_errors_2()); Self::GetAllValidators(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: GetApprovedCall) -> Self { + Self::GetApproved(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: GetAttestedPubKeyCall) -> Self { Self::GetAttestedPubKey(value) @@ -20885,6 +22393,11 @@ abi_errors.append(&mut __abi_errors_2()); Self::GetDelegatedStakersWithUnfreezingStakesCount(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: GetEmptyStakeRecordSlotsCall) -> Self { + Self::GetEmptyStakeRecordSlots(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: GetKeySetCall) -> Self { Self::GetKeySet(value) @@ -21167,6 +22680,11 @@ abi_errors.append(&mut __abi_errors_2()); Self::IsActiveValidatorForNextEpoch(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: IsApprovedForAllCall) -> Self { + Self::IsApprovedForAll(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: IsReadyForNextEpochCall) -> Self { Self::IsReadyForNextEpoch(value) @@ -21288,6 +22806,16 @@ abi_errors.append(&mut __abi_errors_2()); Self::Owner(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: OwnerOfCall) -> Self { + Self::OwnerOf(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: OwnershipChangeCall) -> Self { + Self::OwnershipChange(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: PermittedRealmsForValidatorCall) -> Self { Self::PermittedRealmsForValidator(value) @@ -21353,6 +22881,22 @@ abi_errors.append(&mut __abi_errors_2()); Self::RequestToLeaveAsNode(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: SafeTransferFromCall) -> Self { + Self::SafeTransferFrom(value) + } + } + impl ::core::convert::From + for StakingCalls { + fn from(value: SafeTransferFromWithFromAndToAndDataCall) -> Self { + Self::SafeTransferFromWithFromAndToAndData(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: SetApprovalForAllCall) -> Self { + Self::SetApprovalForAll(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: SetComplaintConfigCall) -> Self { Self::SetComplaintConfig(value) @@ -21478,6 +23022,11 @@ abi_errors.append(&mut __abi_errors_2()); Self::Stake(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: StakeBalanceOfCall) -> Self { + Self::StakeBalanceOf(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: StakerToValidatorsTheyStakedToCall) -> Self { Self::StakerToValidatorsTheyStakedTo(value) @@ -21493,6 +23042,26 @@ abi_errors.append(&mut __abi_errors_2()); Self::SupportsInterface(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: TokenOfOwnerByIndexCall) -> Self { + Self::TokenOfOwnerByIndex(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TokenToStakeRecordCall) -> Self { + Self::TokenToStakeRecord(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TotalSupplyCall) -> Self { + Self::TotalSupply(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TransferFromCall) -> Self { + Self::TransferFrom(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: TransferOwnershipCall) -> Self { Self::TransferOwnership(value) @@ -21866,6 +23435,20 @@ abi_errors.append(&mut __abi_errors_2()); pub struct GetAllValidatorsReturn( pub ::std::vec::Vec<::ethers::core::types::Address>, ); + ///Container type for all return fields from the `getApproved` function with signature `getApproved(uint256)` and selector `0x081812fc` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GetApprovedReturn(pub ::ethers::core::types::Address); ///Container type for all return fields from the `getAttestedPubKey` function with signature `getAttestedPubKey(address)` and selector `0xe9332ea7` #[derive( Clone, @@ -21926,6 +23509,20 @@ abi_errors.append(&mut __abi_errors_2()); pub struct GetDelegatedStakersWithUnfreezingStakesCountReturn( pub ::ethers::core::types::U256, ); + ///Container type for all return fields from the `getEmptyStakeRecordSlots` function with signature `getEmptyStakeRecordSlots(address,address)` and selector `0xa6f67c51` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GetEmptyStakeRecordSlotsReturn(pub ::ethers::core::types::U256); ///Container type for all return fields from the `getKeySet` function with signature `getKeySet(string)` and selector `0xa305e5fe` #[derive( Clone, @@ -22371,7 +23968,7 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] pub struct GetThresholdReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `getTimelockInEpoch` function with signature `getTimelockInEpoch(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address),uint256)` and selector `0xf16bbde3` + ///Container type for all return fields from the `getTimelockInEpoch` function with signature `getTimelockInEpoch(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)` and selector `0x2db912e4` #[derive( Clone, ::ethers::contract::EthAbiType, @@ -22413,7 +24010,7 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] pub struct GetTokenPriceReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `getTokensStaked` function with signature `getTokensStaked(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address),uint256)` and selector `0x5e91a664` + ///Container type for all return fields from the `getTokensStaked` function with signature `getTokensStaked(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)` and selector `0x0fd78304` #[derive( Clone, ::ethers::contract::EthAbiType, @@ -22660,6 +24257,20 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] pub struct IsActiveValidatorForNextEpochReturn(pub bool); + ///Container type for all return fields from the `isApprovedForAll` function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct IsApprovedForAllReturn(pub bool); ///Container type for all return fields from the `isReadyForNextEpoch` function with signature `isReadyForNextEpoch(uint256)` and selector `0x7fecc451` #[derive( Clone, @@ -22958,6 +24569,34 @@ abi_errors.append(&mut __abi_errors_2()); pub struct OwnerReturn { pub owner: ::ethers::core::types::Address, } + ///Container type for all return fields from the `ownerOf` function with signature `ownerOf(uint256)` and selector `0x6352211e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct OwnerOfReturn(pub ::ethers::core::types::Address); + ///Container type for all return fields from the `ownershipChange` function with signature `ownershipChange(uint256)` and selector `0x23857d51` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct OwnershipChangeReturn(pub ::ethers::core::types::U256); ///Container type for all return fields from the `permittedRealmsForValidator` function with signature `permittedRealmsForValidator(address)` and selector `0xe718ff4c` #[derive( Clone, @@ -23046,6 +24685,20 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] pub struct ShouldKickValidatorReturn(pub bool); + ///Container type for all return fields from the `stakeBalanceOf` function with signature `stakeBalanceOf(address)` and selector `0xaf46aa08` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct StakeBalanceOfReturn(pub ::ethers::core::types::U256); ///Container type for all return fields from the `stakerToValidatorsTheyStakedTo` function with signature `stakerToValidatorsTheyStakedTo(address)` and selector `0x6817d36e` #[derive( Clone, @@ -23090,6 +24743,48 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] pub struct SupportsInterfaceReturn(pub bool); + ///Container type for all return fields from the `tokenOfOwnerByIndex` function with signature `tokenOfOwnerByIndex(address,uint256)` and selector `0x2f745c59` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct TokenOfOwnerByIndexReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `tokenToStakeRecord` function with signature `tokenToStakeRecord(uint256)` and selector `0xf0e2d9b5` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct TokenToStakeRecordReturn(pub MappedStakeRecord); + ///Container type for all return fields from the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct TotalSupplyReturn(pub ::ethers::core::types::U256); ///Container type for all return fields from the `validatorSelfStakeWillExpire` function with signature `validatorSelfStakeWillExpire(uint256,address,bool)` and selector `0xbb8b437f` #[derive( Clone, @@ -23339,6 +25034,23 @@ abi_errors.append(&mut __abi_errors_2()); pub max_retries: ::ethers::core::types::U256, pub async_actions_enabled: bool, } + ///`MappedStakeRecord(address,uint256)` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct MappedStakeRecord { + pub operator_staker_address: ::ethers::core::types::Address, + pub stake_record_id: ::ethers::core::types::U256, + } ///`PubKeyMapping(address,(uint256,uint256))` #[derive( Clone, @@ -23423,7 +25135,7 @@ abi_errors.append(&mut __abi_errors_2()); pub validators_in_current_epoch: ::std::vec::Vec<::ethers::core::types::Address>, pub actual_epoch_length: ::ethers::core::types::U256, } - ///`StakeRecord(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address)` + ///`StakeRecord(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256)` #[derive( Clone, ::ethers::contract::EthAbiType, @@ -23447,6 +25159,7 @@ abi_errors.append(&mut __abi_errors_2()); pub loaded: bool, pub frozen: bool, pub attribution_address: ::ethers::core::types::Address, + pub token_id: ::ethers::core::types::U256, } ///`UncompressedK256Key(uint256,uint256)` #[derive( diff --git a/rust/lit-core/lit-blockchain/abis/PKPHelper.json b/rust/lit-core/lit-blockchain/abis/PKPHelper.json index f18177c..434dd5f 100644 --- a/rust/lit-core/lit-blockchain/abis/PKPHelper.json +++ b/rust/lit-core/lit-blockchain/abis/PKPHelper.json @@ -1007,8 +1007,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50604051613a76380380613a7683398101604081905261002f916100d5565b61003833610085565b600280546001600160a01b0384166001600160a01b03198216811783558392916001600160a81b03191617600160a01b83838111156100795761007961011f565b02179055505050610135565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100e857600080fd5b82516001600160a01b03811681146100ff57600080fd5b60208401519092506003811061011457600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b613932806101446000396000f3fe60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a264697066735822122001cf4dad4e3b8669662a3414bbd23a6ede2a3734f393956c3e5288072fe553ab64736f6c634300081c0033", - "deployedBytecode": "0x60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a264697066735822122001cf4dad4e3b8669662a3414bbd23a6ede2a3734f393956c3e5288072fe553ab64736f6c634300081c0033", + "bytecode": "0x608060405234801561001057600080fd5b50604051613a76380380613a7683398101604081905261002f916100d5565b61003833610085565b600280546001600160a01b0384166001600160a01b03198216811783558392916001600160a81b03191617600160a01b83838111156100795761007961011f565b02179055505050610135565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100e857600080fd5b82516001600160a01b03811681146100ff57600080fd5b60208401519092506003811061011457600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b613932806101446000396000f3fe60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a2646970667358221220589da1fa854004c1de9a6b07c7e95f2efa0b2e8281a555db436ee81b615d098b64736f6c634300081c0033", + "deployedBytecode": "0x60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a2646970667358221220589da1fa854004c1de9a6b07c7e95f2efa0b2e8281a555db436ee81b615d098b64736f6c634300081c0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/rust/lit-core/lit-blockchain/abis/Staking.json b/rust/lit-core/lit-blockchain/abis/Staking.json index 5925884..479101e 100644 --- a/rust/lit-core/lit-blockchain/abis/Staking.json +++ b/rust/lit-core/lit-blockchain/abis/Staking.json @@ -2079,25 +2079,6 @@ "name": "Withdrawn", "type": "event" }, - { - "inputs": [ - { - "internalType": "address", - "name": "stakerAddress", - "type": "address" - } - ], - "name": "balanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -2549,6 +2530,25 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "stakerAddress", + "type": "address" + } + ], + "name": "stakeBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -2863,6 +2863,389 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "ERC721ReceiverRejectedTokens", + "type": "error" + }, + { + "inputs": [], + "name": "ERC721TransferToNonERC721ReceiverImplementer", + "type": "error" + }, + { + "inputs": [], + "name": "NotApprovedOrOwner", + "type": "error" + }, + { + "inputs": [], + "name": "NotOwner", + "type": "error" + }, + { + "inputs": [], + "name": "SameAddress", + "type": "error" + }, + { + "inputs": [], + "name": "ZeroAddress", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "indexed": false, + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "indexed": true, + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "approved", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "getApproved", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownershipChange", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenToStakeRecord", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "operatorStakerAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "stakeRecordId", + "type": "uint256" + } + ], + "internalType": "struct LibStakingStorage.MappedStakeRecord", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [], "name": "ActiveValidatorsCannotLeave", @@ -4683,6 +5066,30 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "userStakerAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "operatorStakerAddress", + "type": "address" + } + ], + "name": "getEmptyStakeRecordSlots", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [], "name": "getKeyTypes", @@ -4781,6 +5188,11 @@ "internalType": "address", "name": "attributionAddress", "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" } ], "internalType": "struct LibStakingStorage.StakeRecord", @@ -5122,6 +5534,11 @@ "internalType": "address", "name": "attributionAddress", "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" } ], "internalType": "struct LibStakingStorage.StakeRecord", @@ -5222,6 +5639,11 @@ "internalType": "address", "name": "attributionAddress", "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" } ], "internalType": "struct LibStakingStorage.StakeRecord[]", @@ -5343,6 +5765,11 @@ "internalType": "address", "name": "attributionAddress", "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" } ], "internalType": "struct LibStakingStorage.StakeRecord", @@ -5450,6 +5877,11 @@ "internalType": "address", "name": "attributionAddress", "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" } ], "internalType": "struct LibStakingStorage.StakeRecord", diff --git a/rust/lit-core/lit-blockchain/src/contracts/staking.rs b/rust/lit-core/lit-blockchain/src/contracts/staking.rs index 36b9c83..d75d741 100644 --- a/rust/lit-core/lit-blockchain/src/contracts/staking.rs +++ b/rust/lit-core/lit-blockchain/src/contracts/staking.rs @@ -386,6 +386,35 @@ pub mod staking { }, ], ), + ( + ::std::borrow::ToOwned::to_owned("approve"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("approve"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("approved"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("balanceOf"), ::std::vec![ @@ -393,7 +422,7 @@ pub mod staking { name: ::std::borrow::ToOwned::to_owned("balanceOf"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakerAddress"), + name: ::std::borrow::ToOwned::to_owned("owner"), kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( ::std::borrow::ToOwned::to_owned("address"), @@ -1519,6 +1548,36 @@ pub mod staking { }, ], ), + ( + ::std::borrow::ToOwned::to_owned("getApproved"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("getApproved"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("getAttestedPubKey"), ::std::vec![ @@ -1669,6 +1728,47 @@ pub mod staking { }, ], ), + ( + ::std::borrow::ToOwned::to_owned("getEmptyStakeRecordSlots"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "getEmptyStakeRecordSlots", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("userStakerAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "operatorStakerAddress", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("getKeySet"), ::std::vec![ @@ -1823,6 +1923,7 @@ pub mod staking { ::ethers::core::abi::ethabi::ParamType::Bool, ::ethers::core::abi::ethabi::ParamType::Bool, ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ], ), internal_type: ::core::option::Option::Some( @@ -2657,6 +2758,7 @@ pub mod staking { ::ethers::core::abi::ethabi::ParamType::Bool, ::ethers::core::abi::ethabi::ParamType::Bool, ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ], ), internal_type: ::core::option::Option::Some( @@ -2754,6 +2856,7 @@ pub mod staking { ::ethers::core::abi::ethabi::ParamType::Bool, ::ethers::core::abi::ethabi::ParamType::Bool, ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ], ), ), @@ -2886,6 +2989,7 @@ pub mod staking { ::ethers::core::abi::ethabi::ParamType::Bool, ::ethers::core::abi::ethabi::ParamType::Bool, ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ], ), internal_type: ::core::option::Option::Some( @@ -2991,6 +3095,7 @@ pub mod staking { ::ethers::core::abi::ethabi::ParamType::Bool, ::ethers::core::abi::ethabi::ParamType::Bool, ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ], ), internal_type: ::core::option::Option::Some( @@ -3927,6 +4032,41 @@ pub mod staking { }, ], ), + ( + ::std::borrow::ToOwned::to_owned("isApprovedForAll"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("isApprovedForAll"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("operator"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("isReadyForNextEpoch"), ::std::vec![ @@ -4654,6 +4794,68 @@ pub mod staking { }, ], ), + ( + ::std::borrow::ToOwned::to_owned("ownerOf"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("ownerOf"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ownershipChange"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("ownershipChange"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("permittedRealmsForValidator"), ::std::vec![ @@ -5073,13 +5275,27 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("setComplaintConfig"), + ::std::borrow::ToOwned::to_owned("safeTransferFrom"), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setComplaintConfig"), + name: ::std::borrow::ToOwned::to_owned("safeTransferFrom"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("reason"), + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenId"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -5087,20 +5303,42 @@ pub mod staking { ::std::borrow::ToOwned::to_owned("uint256"), ), }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("safeTransferFrom"), + inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("config"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct LibStakingStorage.ComplaintConfig", - ), + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("data"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes"), ), }, ], @@ -5111,27 +5349,92 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("setConfig"), + ::std::borrow::ToOwned::to_owned("setApprovalForAll"), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setConfig"), + name: ::std::borrow::ToOwned::to_owned("setApprovalForAll"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newConfig"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ), - ), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + name: ::std::borrow::ToOwned::to_owned("operator"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("approved"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("setComplaintConfig"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("setComplaintConfig"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("reason"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("config"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct LibStakingStorage.ComplaintConfig", + ), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("setConfig"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("setConfig"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("newConfig"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ), + ), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ::ethers::core::abi::ethabi::ParamType::Bool, @@ -5922,6 +6225,36 @@ pub mod staking { }, ], ), + ( + ::std::borrow::ToOwned::to_owned("stakeBalanceOf"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("stakeBalanceOf"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakerAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("stakerToValidatorsTheyStakedTo"), ::std::vec![ @@ -6018,6 +6351,142 @@ pub mod staking { }, ], ), + ( + ::std::borrow::ToOwned::to_owned("tokenOfOwnerByIndex"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "tokenOfOwnerByIndex", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("index"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("tokenToStakeRecord"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("tokenToStakeRecord"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct LibStakingStorage.MappedStakeRecord", + ), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("totalSupply"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("totalSupply"), + inputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("transferFrom"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("transferFrom"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("tokenId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("transferOwnership"), ::std::vec![ @@ -6336,6 +6805,60 @@ pub mod staking { }, ], ), + ( + ::std::borrow::ToOwned::to_owned("Approval"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Approval"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("approved"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("tokenId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: true, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ApprovalForAll"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("ApprovalForAll"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("operator"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("approved"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("AttestedWalletRegistered"), ::std::vec![ @@ -7129,6 +7652,34 @@ pub mod staking { }, ], ), + ( + ::std::borrow::ToOwned::to_owned("Transfer"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Transfer"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("from"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("to"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("tokenId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: true, + }, + ], + anonymous: false, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("TrustedForwarderSet"), ::std::vec![ @@ -7815,6 +8366,30 @@ pub mod staking { }, ], ), + ( + ::std::borrow::ToOwned::to_owned("ERC721ReceiverRejectedTokens"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "ERC721ReceiverRejectedTokens", + ), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned( + "ERC721TransferToNonERC721ReceiverImplementer", + ), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "ERC721TransferToNonERC721ReceiverImplementer", + ), + inputs: ::std::vec![], + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("IncorrectFacetCutAction"), ::std::vec![ @@ -8193,6 +8768,15 @@ pub mod staking { }, ], ), + ( + ::std::borrow::ToOwned::to_owned("NotApprovedOrOwner"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NotApprovedOrOwner"), + inputs: ::std::vec![], + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("NotContractOwner"), ::std::vec![ @@ -8369,6 +8953,15 @@ pub mod staking { }, ], ), + ( + ::std::borrow::ToOwned::to_owned("NotOwner"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NotOwner"), + inputs: ::std::vec![], + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("RealmIdNotFound"), ::std::vec![ @@ -8418,6 +9011,15 @@ pub mod staking { }, ], ), + ( + ::std::borrow::ToOwned::to_owned("SameAddress"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("SameAddress"), + inputs: ::std::vec![], + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("SignaledReadyForWrongEpochNumber"), ::std::vec![ @@ -8835,6 +9437,15 @@ pub mod staking { }, ], ), + ( + ::std::borrow::ToOwned::to_owned("ZeroAddress"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("ZeroAddress"), + inputs: ::std::vec![], + }, + ], + ), ]), receive: false, fallback: false, @@ -9003,13 +9614,23 @@ pub mod staking { .method_hash([243, 184, 119, 121], realm_id) .expect("method not found (this should never happen)") } + ///Calls the contract's `approve` (0x095ea7b3) function + pub fn approve( + &self, + approved: ::ethers::core::types::Address, + token_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([9, 94, 167, 179], (approved, token_id)) + .expect("method not found (this should never happen)") + } ///Calls the contract's `balanceOf` (0x70a08231) function pub fn balance_of( &self, - staker_address: ::ethers::core::types::Address, + owner: ::ethers::core::types::Address, ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([112, 160, 130, 49], staker_address) + .method_hash([112, 160, 130, 49], owner) .expect("method not found (this should never happen)") } ///Calls the contract's `calculateRewardsPerDay` (0x9be372e0) function @@ -9324,10 +9945,22 @@ pub mod staking { &self, ) -> ::ethers::contract::builders::ContractCall< M, - ::std::vec::Vec<::ethers::core::types::Address>, + ::std::vec::Vec<::ethers::core::types::Address>, + > { + self.0 + .method_hash([243, 81, 58, 55], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `getApproved` (0x081812fc) function + pub fn get_approved( + &self, + token_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::ethers::core::types::Address, > { self.0 - .method_hash([243, 81, 58, 55], ()) + .method_hash([8, 24, 18, 252], token_id) .expect("method not found (this should never happen)") } ///Calls the contract's `getAttestedPubKey` (0xe9332ea7) function @@ -9374,6 +10007,19 @@ pub mod staking { .method_hash([140, 60, 207, 76], validator_address) .expect("method not found (this should never happen)") } + ///Calls the contract's `getEmptyStakeRecordSlots` (0xa6f67c51) function + pub fn get_empty_stake_record_slots( + &self, + user_staker_address: ::ethers::core::types::Address, + operator_staker_address: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [166, 246, 124, 81], + (user_staker_address, operator_staker_address), + ) + .expect("method not found (this should never happen)") + } ///Calls the contract's `getKeySet` (0xa305e5fe) function pub fn get_key_set( &self, @@ -9693,7 +10339,7 @@ pub mod staking { .method_hash([70, 21, 213, 233], node_count) .expect("method not found (this should never happen)") } - ///Calls the contract's `getTimelockInEpoch` (0xf16bbde3) function + ///Calls the contract's `getTimelockInEpoch` (0x2db912e4) function pub fn get_timelock_in_epoch( &self, staker_address: ::ethers::core::types::Address, @@ -9702,7 +10348,7 @@ pub mod staking { ) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash( - [241, 107, 189, 227], + [45, 185, 18, 228], (staker_address, stake_record, reward_epoch_number), ) .expect("method not found (this should never happen)") @@ -9726,7 +10372,7 @@ pub mod staking { .method_hash([75, 148, 245, 14], ()) .expect("method not found (this should never happen)") } - ///Calls the contract's `getTokensStaked` (0x5e91a664) function + ///Calls the contract's `getTokensStaked` (0x0fd78304) function pub fn get_tokens_staked( &self, staker_address: ::ethers::core::types::Address, @@ -9735,7 +10381,7 @@ pub mod staking { ) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash( - [94, 145, 166, 100], + [15, 215, 131, 4], (staker_address, stake_record, reward_epoch_number), ) .expect("method not found (this should never happen)") @@ -9985,6 +10631,16 @@ pub mod staking { .method_hash([38, 252, 111, 155], (realm_id, staker_address)) .expect("method not found (this should never happen)") } + ///Calls the contract's `isApprovedForAll` (0xe985e9c5) function + pub fn is_approved_for_all( + &self, + owner: ::ethers::core::types::Address, + operator: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([233, 133, 233, 197], (owner, operator)) + .expect("method not found (this should never happen)") + } ///Calls the contract's `isReadyForNextEpoch` (0x7fecc451) function pub fn is_ready_for_next_epoch( &self, @@ -10223,6 +10879,27 @@ pub mod staking { .method_hash([141, 165, 203, 91], ()) .expect("method not found (this should never happen)") } + ///Calls the contract's `ownerOf` (0x6352211e) function + pub fn owner_of( + &self, + token_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::ethers::core::types::Address, + > { + self.0 + .method_hash([99, 82, 33, 30], token_id) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `ownershipChange` (0x23857d51) function + pub fn ownership_change( + &self, + token_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([35, 133, 125, 81], token_id) + .expect("method not found (this should never happen)") + } ///Calls the contract's `permittedRealmsForValidator` (0xe718ff4c) function pub fn permitted_realms_for_validator( &self, @@ -10363,6 +11040,39 @@ pub mod staking { .method_hash([198, 240, 76, 187], realm_id) .expect("method not found (this should never happen)") } + ///Calls the contract's `safeTransferFrom` (0x42842e0e) function + pub fn safe_transfer_from( + &self, + from: ::ethers::core::types::Address, + to: ::ethers::core::types::Address, + token_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([66, 132, 46, 14], (from, to, token_id)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `safeTransferFrom` (0xb88d4fde) function + pub fn safe_transfer_from_with_from_and_to_and_data( + &self, + from: ::ethers::core::types::Address, + to: ::ethers::core::types::Address, + token_id: ::ethers::core::types::U256, + data: ::ethers::core::types::Bytes, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([184, 141, 79, 222], (from, to, token_id, data)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `setApprovalForAll` (0xa22cb465) function + pub fn set_approval_for_all( + &self, + operator: ::ethers::core::types::Address, + approved: bool, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([162, 44, 180, 101], (operator, approved)) + .expect("method not found (this should never happen)") + } ///Calls the contract's `setComplaintConfig` (0x440e8d22) function pub fn set_complaint_config( &self, @@ -10614,6 +11324,15 @@ pub mod staking { ) .expect("method not found (this should never happen)") } + ///Calls the contract's `stakeBalanceOf` (0xaf46aa08) function + pub fn stake_balance_of( + &self, + staker_address: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([175, 70, 170, 8], staker_address) + .expect("method not found (this should never happen)") + } ///Calls the contract's `stakerToValidatorsTheyStakedTo` (0x6817d36e) function pub fn staker_to_validators_they_staked_to( &self, @@ -10644,6 +11363,44 @@ pub mod staking { .method_hash([1, 255, 201, 167], interface_id) .expect("method not found (this should never happen)") } + ///Calls the contract's `tokenOfOwnerByIndex` (0x2f745c59) function + pub fn token_of_owner_by_index( + &self, + owner: ::ethers::core::types::Address, + index: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([47, 116, 92, 89], (owner, index)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `tokenToStakeRecord` (0xf0e2d9b5) function + pub fn token_to_stake_record( + &self, + token_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([240, 226, 217, 181], token_id) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `totalSupply` (0x18160ddd) function + pub fn total_supply( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([24, 22, 13, 221], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `transferFrom` (0x23b872dd) function + pub fn transfer_from( + &self, + from: ::ethers::core::types::Address, + to: ::ethers::core::types::Address, + token_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([35, 184, 114, 221], (from, to, token_id)) + .expect("method not found (this should never happen)") + } ///Calls the contract's `transferOwnership` (0xf2fde38b) function pub fn transfer_ownership( &self, @@ -10731,6 +11488,26 @@ pub mod staking { > { self.0.event() } + ///Gets the contract's `Approval` event + pub fn approval_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + ApprovalFilter, + > { + self.0.event() + } + ///Gets the contract's `ApprovalForAll` event + pub fn approval_for_all_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + ApprovalForAllFilter, + > { + self.0.event() + } ///Gets the contract's `AttestedWalletRegistered` event pub fn attested_wallet_registered_filter( &self, @@ -11017,6 +11794,16 @@ pub mod staking { > { self.0.event() } + ///Gets the contract's `Transfer` event + pub fn transfer_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + TransferFilter, + > { + self.0.event() + } ///Gets the contract's `TrustedForwarderSet` event pub fn trusted_forwarder_set_filter( &self, @@ -11589,6 +12376,42 @@ pub mod staking { pub struct CouldNotMapNodeAddressToStakerAddress { pub node_address: ::ethers::core::types::Address, } + ///Custom Error type `ERC721ReceiverRejectedTokens` with signature `ERC721ReceiverRejectedTokens()` and selector `0x9e64a6c4` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror( + name = "ERC721ReceiverRejectedTokens", + abi = "ERC721ReceiverRejectedTokens()" + )] + pub struct ERC721ReceiverRejectedTokens; + ///Custom Error type `ERC721TransferToNonERC721ReceiverImplementer` with signature `ERC721TransferToNonERC721ReceiverImplementer()` and selector `0x1ad78a40` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror( + name = "ERC721TransferToNonERC721ReceiverImplementer", + abi = "ERC721TransferToNonERC721ReceiverImplementer()" + )] + pub struct ERC721TransferToNonERC721ReceiverImplementer; ///Custom Error type `IncorrectFacetCutAction` with signature `IncorrectFacetCutAction(uint8)` and selector `0x7fe9a41e` #[derive( Clone, @@ -11969,6 +12792,21 @@ pub mod staking { abi = "NodeAddressNotFoundForStaker()" )] pub struct NodeAddressNotFoundForStaker; + ///Custom Error type `NotApprovedOrOwner` with signature `NotApprovedOrOwner()` and selector `0xe433766c` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror(name = "NotApprovedOrOwner", abi = "NotApprovedOrOwner()")] + pub struct NotApprovedOrOwner; ///Custom Error type `NotContractOwner` with signature `NotContractOwner(address,address)` and selector `0xff4127cb` #[derive( Clone, @@ -12073,6 +12911,21 @@ pub mod staking { pub next_ready_validator_count: ::ethers::core::types::U256, pub minimum_validator_count_to_be_ready: ::ethers::core::types::U256, } + ///Custom Error type `NotOwner` with signature `NotOwner()` and selector `0x30cd7471` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror(name = "NotOwner", abi = "NotOwner()")] + pub struct NotOwner; ///Custom Error type `RealmIdNotFound` with signature `RealmIdNotFound(address)` and selector `0x4d1e0bab` #[derive( Clone, @@ -12125,6 +12978,21 @@ pub mod staking { )] #[etherror(name = "RewardsMustBeClaimed", abi = "RewardsMustBeClaimed()")] pub struct RewardsMustBeClaimed; + ///Custom Error type `SameAddress` with signature `SameAddress()` and selector `0x367558c3` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror(name = "SameAddress", abi = "SameAddress()")] + pub struct SameAddress; ///Custom Error type `SignaledReadyForWrongEpochNumber` with signature `SignaledReadyForWrongEpochNumber(uint256,uint256)` and selector `0x068cde2a` #[derive( Clone, @@ -12453,6 +13321,21 @@ pub mod staking { pub struct ValueMustBeNonzero { pub value_name: ::std::string::String, } + ///Custom Error type `ZeroAddress` with signature `ZeroAddress()` and selector `0xd92e233d` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror(name = "ZeroAddress", abi = "ZeroAddress()")] + pub struct ZeroAddress; ///Container type for all of the contract's custom errors #[derive( Clone, @@ -12500,6 +13383,10 @@ pub mod staking { CannotWithdrawZero(CannotWithdrawZero), CheckpointAheadOfCurrentEpoch(CheckpointAheadOfCurrentEpoch), CouldNotMapNodeAddressToStakerAddress(CouldNotMapNodeAddressToStakerAddress), + ERC721ReceiverRejectedTokens(ERC721ReceiverRejectedTokens), + ERC721TransferToNonERC721ReceiverImplementer( + ERC721TransferToNonERC721ReceiverImplementer, + ), IncorrectFacetCutAction(IncorrectFacetCutAction), InitializationFunctionReverted(InitializationFunctionReverted), InsufficientSelfStake(InsufficientSelfStake), @@ -12525,6 +13412,7 @@ pub mod staking { NoEmptyStakingSlot(NoEmptyStakingSlot), NoSelectorsProvidedForFacetForCut(NoSelectorsProvidedForFacetForCut), NodeAddressNotFoundForStaker(NodeAddressNotFoundForStaker), + NotApprovedOrOwner(NotApprovedOrOwner), NotContractOwner(NotContractOwner), NotEnoughTimeElapsedForTimeoutSinceLastEpoch( NotEnoughTimeElapsedForTimeoutSinceLastEpoch, @@ -12532,9 +13420,11 @@ pub mod staking { NotEnoughTimeElapsedSinceLastEpoch(NotEnoughTimeElapsedSinceLastEpoch), NotEnoughValidatorsInNextEpoch(NotEnoughValidatorsInNextEpoch), NotEnoughValidatorsReadyForNextEpoch(NotEnoughValidatorsReadyForNextEpoch), + NotOwner(NotOwner), RealmIdNotFound(RealmIdNotFound), RemoveFacetAddressMustBeZeroAddress(RemoveFacetAddressMustBeZeroAddress), RewardsMustBeClaimed(RewardsMustBeClaimed), + SameAddress(SameAddress), SignaledReadyForWrongEpochNumber(SignaledReadyForWrongEpochNumber), SlashingMustOccurInSameRealm(SlashingMustOccurInSameRealm), StakeAmountNotMet(StakeAmountNotMet), @@ -12552,6 +13442,7 @@ pub mod staking { ValidatorNotRegistered(ValidatorNotRegistered), ValidatorRegisterAttestedWalletDisabled(ValidatorRegisterAttestedWalletDisabled), ValueMustBeNonzero(ValueMustBeNonzero), + ZeroAddress(ZeroAddress), /// The standard solidity revert string, with selector /// Error(string) -- 0x08c379a0 RevertString(::std::string::String), @@ -12697,6 +13588,16 @@ pub mod staking { ) { return Ok(Self::CouldNotMapNodeAddressToStakerAddress(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::ERC721ReceiverRejectedTokens(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::ERC721TransferToNonERC721ReceiverImplementer(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -12808,6 +13709,11 @@ pub mod staking { ) { return Ok(Self::NodeAddressNotFoundForStaker(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::NotApprovedOrOwner(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -12833,6 +13739,11 @@ pub mod staking { ) { return Ok(Self::NotEnoughValidatorsReadyForNextEpoch(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::NotOwner(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -12848,6 +13759,11 @@ pub mod staking { ) { return Ok(Self::RewardsMustBeClaimed(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SameAddress(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -12933,6 +13849,11 @@ pub mod staking { ) { return Ok(Self::ValueMustBeNonzero(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::ZeroAddress(decoded)); + } Err(::ethers::core::abi::Error::InvalidData.into()) } } @@ -13014,6 +13935,12 @@ pub mod staking { Self::CouldNotMapNodeAddressToStakerAddress(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::ERC721ReceiverRejectedTokens(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ERC721TransferToNonERC721ReceiverImplementer(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::IncorrectFacetCutAction(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -13077,6 +14004,9 @@ pub mod staking { Self::NodeAddressNotFoundForStaker(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::NotApprovedOrOwner(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::NotContractOwner(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -13092,6 +14022,9 @@ pub mod staking { Self::NotEnoughValidatorsReadyForNextEpoch(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::NotOwner(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::RealmIdNotFound(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -13101,6 +14034,9 @@ pub mod staking { Self::RewardsMustBeClaimed(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::SameAddress(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::SignaledReadyForWrongEpochNumber(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -13152,6 +14088,9 @@ pub mod staking { Self::ValueMustBeNonzero(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::ZeroAddress(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::RevertString(s) => ::ethers::core::abi::AbiEncode::encode(s), } } @@ -13260,6 +14199,14 @@ pub mod staking { == ::selector() => { true } + _ if selector + == ::selector() => { + true + } + _ if selector + == ::selector() => { + true + } _ if selector == ::selector() => { true @@ -13342,6 +14289,10 @@ pub mod staking { == ::selector() => { true } + _ if selector + == ::selector() => { + true + } _ if selector == ::selector() => { true @@ -13362,6 +14313,8 @@ pub mod staking { == ::selector() => { true } + _ if selector + == ::selector() => true, _ if selector == ::selector() => { true @@ -13374,6 +14327,8 @@ pub mod staking { == ::selector() => { true } + _ if selector + == ::selector() => true, _ if selector == ::selector() => { true @@ -13442,6 +14397,8 @@ pub mod staking { == ::selector() => { true } + _ if selector + == ::selector() => true, _ => false, } } @@ -13516,6 +14473,12 @@ pub mod staking { Self::CouldNotMapNodeAddressToStakerAddress(element) => { ::core::fmt::Display::fmt(element, f) } + Self::ERC721ReceiverRejectedTokens(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::ERC721TransferToNonERC721ReceiverImplementer(element) => { + ::core::fmt::Display::fmt(element, f) + } Self::IncorrectFacetCutAction(element) => { ::core::fmt::Display::fmt(element, f) } @@ -13573,6 +14536,9 @@ pub mod staking { Self::NodeAddressNotFoundForStaker(element) => { ::core::fmt::Display::fmt(element, f) } + Self::NotApprovedOrOwner(element) => { + ::core::fmt::Display::fmt(element, f) + } Self::NotContractOwner(element) => ::core::fmt::Display::fmt(element, f), Self::NotEnoughTimeElapsedForTimeoutSinceLastEpoch(element) => { ::core::fmt::Display::fmt(element, f) @@ -13586,6 +14552,7 @@ pub mod staking { Self::NotEnoughValidatorsReadyForNextEpoch(element) => { ::core::fmt::Display::fmt(element, f) } + Self::NotOwner(element) => ::core::fmt::Display::fmt(element, f), Self::RealmIdNotFound(element) => ::core::fmt::Display::fmt(element, f), Self::RemoveFacetAddressMustBeZeroAddress(element) => { ::core::fmt::Display::fmt(element, f) @@ -13593,6 +14560,7 @@ pub mod staking { Self::RewardsMustBeClaimed(element) => { ::core::fmt::Display::fmt(element, f) } + Self::SameAddress(element) => ::core::fmt::Display::fmt(element, f), Self::SignaledReadyForWrongEpochNumber(element) => { ::core::fmt::Display::fmt(element, f) } @@ -13638,6 +14606,7 @@ pub mod staking { Self::ValueMustBeNonzero(element) => { ::core::fmt::Display::fmt(element, f) } + Self::ZeroAddress(element) => ::core::fmt::Display::fmt(element, f), Self::RevertString(s) => ::core::fmt::Display::fmt(s, f), } } @@ -13781,6 +14750,17 @@ pub mod staking { Self::CouldNotMapNodeAddressToStakerAddress(value) } } + impl ::core::convert::From for StakingErrors { + fn from(value: ERC721ReceiverRejectedTokens) -> Self { + Self::ERC721ReceiverRejectedTokens(value) + } + } + impl ::core::convert::From + for StakingErrors { + fn from(value: ERC721TransferToNonERC721ReceiverImplementer) -> Self { + Self::ERC721TransferToNonERC721ReceiverImplementer(value) + } + } impl ::core::convert::From for StakingErrors { fn from(value: IncorrectFacetCutAction) -> Self { Self::IncorrectFacetCutAction(value) @@ -13891,6 +14871,11 @@ pub mod staking { Self::NodeAddressNotFoundForStaker(value) } } + impl ::core::convert::From for StakingErrors { + fn from(value: NotApprovedOrOwner) -> Self { + Self::NotApprovedOrOwner(value) + } + } impl ::core::convert::From for StakingErrors { fn from(value: NotContractOwner) -> Self { Self::NotContractOwner(value) @@ -13917,6 +14902,11 @@ pub mod staking { Self::NotEnoughValidatorsReadyForNextEpoch(value) } } + impl ::core::convert::From for StakingErrors { + fn from(value: NotOwner) -> Self { + Self::NotOwner(value) + } + } impl ::core::convert::From for StakingErrors { fn from(value: RealmIdNotFound) -> Self { Self::RealmIdNotFound(value) @@ -13932,6 +14922,11 @@ pub mod staking { Self::RewardsMustBeClaimed(value) } } + impl ::core::convert::From for StakingErrors { + fn from(value: SameAddress) -> Self { + Self::SameAddress(value) + } + } impl ::core::convert::From for StakingErrors { fn from(value: SignaledReadyForWrongEpochNumber) -> Self { Self::SignaledReadyForWrongEpochNumber(value) @@ -14018,6 +15013,49 @@ pub mod staking { Self::ValueMustBeNonzero(value) } } + impl ::core::convert::From for StakingErrors { + fn from(value: ZeroAddress) -> Self { + Self::ZeroAddress(value) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "AdvancedEpoch", abi = "AdvancedEpoch(uint256,uint256)")] + pub struct AdvancedEpochFilter { + pub realm_id: ::ethers::core::types::U256, + pub epoch_number: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] + pub struct ApprovalFilter { + #[ethevent(indexed)] + pub owner: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub approved: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub token_id: ::ethers::core::types::U256, + } #[derive( Clone, ::ethers::contract::EthEvent, @@ -14030,10 +15068,13 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "AdvancedEpoch", abi = "AdvancedEpoch(uint256,uint256)")] - pub struct AdvancedEpochFilter { - pub realm_id: ::ethers::core::types::U256, - pub epoch_number: ::ethers::core::types::U256, + #[ethevent(name = "ApprovalForAll", abi = "ApprovalForAll(address,address,bool)")] + pub struct ApprovalForAllFilter { + #[ethevent(indexed)] + pub owner: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub operator: ::ethers::core::types::Address, + pub approved: bool, } #[derive( Clone, @@ -14587,6 +15628,27 @@ pub mod staking { Eq, Hash )] + #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] + pub struct TransferFilter { + #[ethevent(indexed)] + pub from: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub to: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub token_id: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] #[ethevent(name = "TrustedForwarderSet", abi = "TrustedForwarderSet(address)")] pub struct TrustedForwarderSetFilter { pub new_trusted_forwarder: ::ethers::core::types::Address, @@ -14782,6 +15844,8 @@ pub mod staking { )] pub enum StakingEvents { AdvancedEpochFilter(AdvancedEpochFilter), + ApprovalFilter(ApprovalFilter), + ApprovalForAllFilter(ApprovalForAllFilter), AttestedWalletRegisteredFilter(AttestedWalletRegisteredFilter), ClearOfflinePhaseDataFilter(ClearOfflinePhaseDataFilter), ComplaintConfigSetFilter(ComplaintConfigSetFilter), @@ -14811,6 +15875,7 @@ pub mod staking { StakedFilter(StakedFilter), StakingTokenSetFilter(StakingTokenSetFilter), StateChangedFilter(StateChangedFilter), + TransferFilter(TransferFilter), TrustedForwarderSetFilter(TrustedForwarderSetFilter), ValidatorBannedFilter(ValidatorBannedFilter), ValidatorCommissionClaimedFilter(ValidatorCommissionClaimedFilter), @@ -14829,6 +15894,12 @@ pub mod staking { if let Ok(decoded) = AdvancedEpochFilter::decode_log(log) { return Ok(StakingEvents::AdvancedEpochFilter(decoded)); } + if let Ok(decoded) = ApprovalFilter::decode_log(log) { + return Ok(StakingEvents::ApprovalFilter(decoded)); + } + if let Ok(decoded) = ApprovalForAllFilter::decode_log(log) { + return Ok(StakingEvents::ApprovalForAllFilter(decoded)); + } if let Ok(decoded) = AttestedWalletRegisteredFilter::decode_log(log) { return Ok(StakingEvents::AttestedWalletRegisteredFilter(decoded)); } @@ -14916,6 +15987,9 @@ pub mod staking { if let Ok(decoded) = StateChangedFilter::decode_log(log) { return Ok(StakingEvents::StateChangedFilter(decoded)); } + if let Ok(decoded) = TransferFilter::decode_log(log) { + return Ok(StakingEvents::TransferFilter(decoded)); + } if let Ok(decoded) = TrustedForwarderSetFilter::decode_log(log) { return Ok(StakingEvents::TrustedForwarderSetFilter(decoded)); } @@ -14955,6 +16029,10 @@ pub mod staking { Self::AdvancedEpochFilter(element) => { ::core::fmt::Display::fmt(element, f) } + Self::ApprovalFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::ApprovalForAllFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } Self::AttestedWalletRegisteredFilter(element) => { ::core::fmt::Display::fmt(element, f) } @@ -15032,6 +16110,7 @@ pub mod staking { Self::StateChangedFilter(element) => { ::core::fmt::Display::fmt(element, f) } + Self::TransferFilter(element) => ::core::fmt::Display::fmt(element, f), Self::TrustedForwarderSetFilter(element) => { ::core::fmt::Display::fmt(element, f) } @@ -15068,6 +16147,16 @@ pub mod staking { Self::AdvancedEpochFilter(value) } } + impl ::core::convert::From for StakingEvents { + fn from(value: ApprovalFilter) -> Self { + Self::ApprovalFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: ApprovalForAllFilter) -> Self { + Self::ApprovalForAllFilter(value) + } + } impl ::core::convert::From for StakingEvents { fn from(value: AttestedWalletRegisteredFilter) -> Self { Self::AttestedWalletRegisteredFilter(value) @@ -15213,6 +16302,11 @@ pub mod staking { Self::StateChangedFilter(value) } } + impl ::core::convert::From for StakingEvents { + fn from(value: TransferFilter) -> Self { + Self::TransferFilter(value) + } + } impl ::core::convert::From for StakingEvents { fn from(value: TrustedForwarderSetFilter) -> Self { Self::TrustedForwarderSetFilter(value) @@ -15489,6 +16583,24 @@ pub mod staking { pub struct AdvanceEpochCall { pub realm_id: ::ethers::core::types::U256, } + ///Container type for all input parameters for the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "approve", abi = "approve(address,uint256)")] + pub struct ApproveCall { + pub approved: ::ethers::core::types::Address, + pub token_id: ::ethers::core::types::U256, + } ///Container type for all input parameters for the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` #[derive( Clone, @@ -15504,7 +16616,7 @@ pub mod staking { )] #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] pub struct BalanceOfCall { - pub staker_address: ::ethers::core::types::Address, + pub owner: ::ethers::core::types::Address, } ///Container type for all input parameters for the `calculateRewardsPerDay` function with signature `calculateRewardsPerDay((uint256,uint256,address[],uint256))` and selector `0x9be372e0` #[derive( @@ -16080,6 +17192,23 @@ pub mod staking { )] #[ethcall(name = "getAllValidators", abi = "getAllValidators()")] pub struct GetAllValidatorsCall; + ///Container type for all input parameters for the `getApproved` function with signature `getApproved(uint256)` and selector `0x081812fc` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "getApproved", abi = "getApproved(uint256)")] + pub struct GetApprovedCall { + pub token_id: ::ethers::core::types::U256, + } ///Container type for all input parameters for the `getAttestedPubKey` function with signature `getAttestedPubKey(address)` and selector `0xe9332ea7` #[derive( Clone, @@ -16159,6 +17288,27 @@ pub mod staking { pub struct GetDelegatedStakersWithUnfreezingStakesCountCall { pub validator_address: ::ethers::core::types::Address, } + ///Container type for all input parameters for the `getEmptyStakeRecordSlots` function with signature `getEmptyStakeRecordSlots(address,address)` and selector `0xa6f67c51` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "getEmptyStakeRecordSlots", + abi = "getEmptyStakeRecordSlots(address,address)" + )] + pub struct GetEmptyStakeRecordSlotsCall { + pub user_staker_address: ::ethers::core::types::Address, + pub operator_staker_address: ::ethers::core::types::Address, + } ///Container type for all input parameters for the `getKeySet` function with signature `getKeySet(string)` and selector `0xa305e5fe` #[derive( Clone, @@ -16714,7 +17864,7 @@ pub mod staking { pub struct GetThresholdCall { pub node_count: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getTimelockInEpoch` function with signature `getTimelockInEpoch(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address),uint256)` and selector `0xf16bbde3` + ///Container type for all input parameters for the `getTimelockInEpoch` function with signature `getTimelockInEpoch(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)` and selector `0x2db912e4` #[derive( Clone, ::ethers::contract::EthCall, @@ -16729,7 +17879,7 @@ pub mod staking { )] #[ethcall( name = "getTimelockInEpoch", - abi = "getTimelockInEpoch(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address),uint256)" + abi = "getTimelockInEpoch(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)" )] pub struct GetTimelockInEpochCall { pub staker_address: ::ethers::core::types::Address, @@ -16766,7 +17916,7 @@ pub mod staking { )] #[ethcall(name = "getTokenPrice", abi = "getTokenPrice()")] pub struct GetTokenPriceCall; - ///Container type for all input parameters for the `getTokensStaked` function with signature `getTokensStaked(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address),uint256)` and selector `0x5e91a664` + ///Container type for all input parameters for the `getTokensStaked` function with signature `getTokensStaked(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)` and selector `0x0fd78304` #[derive( Clone, ::ethers::contract::EthCall, @@ -16781,7 +17931,7 @@ pub mod staking { )] #[ethcall( name = "getTokensStaked", - abi = "getTokensStaked(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address),uint256)" + abi = "getTokensStaked(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)" )] pub struct GetTokensStakedCall { pub staker_address: ::ethers::core::types::Address, @@ -17200,6 +18350,24 @@ pub mod staking { pub realm_id: ::ethers::core::types::U256, pub staker_address: ::ethers::core::types::Address, } + ///Container type for all input parameters for the `isApprovedForAll` function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "isApprovedForAll", abi = "isApprovedForAll(address,address)")] + pub struct IsApprovedForAllCall { + pub owner: ::ethers::core::types::Address, + pub operator: ::ethers::core::types::Address, + } ///Container type for all input parameters for the `isReadyForNextEpoch` function with signature `isReadyForNextEpoch(uint256)` and selector `0x7fecc451` #[derive( Clone, @@ -17627,6 +18795,40 @@ pub mod staking { )] #[ethcall(name = "owner", abi = "owner()")] pub struct OwnerCall; + ///Container type for all input parameters for the `ownerOf` function with signature `ownerOf(uint256)` and selector `0x6352211e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "ownerOf", abi = "ownerOf(uint256)")] + pub struct OwnerOfCall { + pub token_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `ownershipChange` function with signature `ownershipChange(uint256)` and selector `0x23857d51` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "ownershipChange", abi = "ownershipChange(uint256)")] + pub struct OwnershipChangeCall { + pub token_id: ::ethers::core::types::U256, + } ///Container type for all input parameters for the `permittedRealmsForValidator` function with signature `permittedRealmsForValidator(address)` and selector `0xe718ff4c` #[derive( Clone, @@ -17870,6 +19072,69 @@ pub mod staking { pub struct RequestToLeaveAsNodeCall { pub realm_id: ::ethers::core::types::U256, } + ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256)` and selector `0x42842e0e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "safeTransferFrom", + abi = "safeTransferFrom(address,address,uint256)" + )] + pub struct SafeTransferFromCall { + pub from: ::ethers::core::types::Address, + pub to: ::ethers::core::types::Address, + pub token_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256,bytes)` and selector `0xb88d4fde` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "safeTransferFrom", + abi = "safeTransferFrom(address,address,uint256,bytes)" + )] + pub struct SafeTransferFromWithFromAndToAndDataCall { + pub from: ::ethers::core::types::Address, + pub to: ::ethers::core::types::Address, + pub token_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `setApprovalForAll` function with signature `setApprovalForAll(address,bool)` and selector `0xa22cb465` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "setApprovalForAll", abi = "setApprovalForAll(address,bool)")] + pub struct SetApprovalForAllCall { + pub operator: ::ethers::core::types::Address, + pub approved: bool, + } ///Container type for all input parameters for the `setComplaintConfig` function with signature `setComplaintConfig(uint256,(uint256,uint256,uint256,uint256))` and selector `0x440e8d22` #[derive( Clone, @@ -18342,7 +19607,97 @@ pub mod staking { pub stake_record_id: ::ethers::core::types::U256, pub ratio: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `stake` function with signature `stake(uint256,uint256,address)` and selector `0x7628a37d` + ///Container type for all input parameters for the `stake` function with signature `stake(uint256,uint256,address)` and selector `0x7628a37d` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "stake", abi = "stake(uint256,uint256,address)")] + pub struct StakeCall { + pub amount: ::ethers::core::types::U256, + pub time_lock: ::ethers::core::types::U256, + pub operator_staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `stakeBalanceOf` function with signature `stakeBalanceOf(address)` and selector `0xaf46aa08` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "stakeBalanceOf", abi = "stakeBalanceOf(address)")] + pub struct StakeBalanceOfCall { + pub staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `stakerToValidatorsTheyStakedTo` function with signature `stakerToValidatorsTheyStakedTo(address)` and selector `0x6817d36e` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "stakerToValidatorsTheyStakedTo", + abi = "stakerToValidatorsTheyStakedTo(address)" + )] + pub struct StakerToValidatorsTheyStakedToCall { + pub staker: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `state` function with signature `state(uint256)` and selector `0x3e4f49e6` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "state", abi = "state(uint256)")] + pub struct StateCall { + pub realm_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `supportsInterface` function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "supportsInterface", abi = "supportsInterface(bytes4)")] + pub struct SupportsInterfaceCall { + pub interface_id: [u8; 4], + } + ///Container type for all input parameters for the `tokenOfOwnerByIndex` function with signature `tokenOfOwnerByIndex(address,uint256)` and selector `0x2f745c59` #[derive( Clone, ::ethers::contract::EthCall, @@ -18355,13 +19710,15 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "stake", abi = "stake(uint256,uint256,address)")] - pub struct StakeCall { - pub amount: ::ethers::core::types::U256, - pub time_lock: ::ethers::core::types::U256, - pub operator_staker_address: ::ethers::core::types::Address, + #[ethcall( + name = "tokenOfOwnerByIndex", + abi = "tokenOfOwnerByIndex(address,uint256)" + )] + pub struct TokenOfOwnerByIndexCall { + pub owner: ::ethers::core::types::Address, + pub index: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `stakerToValidatorsTheyStakedTo` function with signature `stakerToValidatorsTheyStakedTo(address)` and selector `0x6817d36e` + ///Container type for all input parameters for the `tokenToStakeRecord` function with signature `tokenToStakeRecord(uint256)` and selector `0xf0e2d9b5` #[derive( Clone, ::ethers::contract::EthCall, @@ -18374,14 +19731,11 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "stakerToValidatorsTheyStakedTo", - abi = "stakerToValidatorsTheyStakedTo(address)" - )] - pub struct StakerToValidatorsTheyStakedToCall { - pub staker: ::ethers::core::types::Address, + #[ethcall(name = "tokenToStakeRecord", abi = "tokenToStakeRecord(uint256)")] + pub struct TokenToStakeRecordCall { + pub token_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `state` function with signature `state(uint256)` and selector `0x3e4f49e6` + ///Container type for all input parameters for the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd` #[derive( Clone, ::ethers::contract::EthCall, @@ -18394,11 +19748,9 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "state", abi = "state(uint256)")] - pub struct StateCall { - pub realm_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `supportsInterface` function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7` + #[ethcall(name = "totalSupply", abi = "totalSupply()")] + pub struct TotalSupplyCall; + ///Container type for all input parameters for the `transferFrom` function with signature `transferFrom(address,address,uint256)` and selector `0x23b872dd` #[derive( Clone, ::ethers::contract::EthCall, @@ -18411,9 +19763,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "supportsInterface", abi = "supportsInterface(bytes4)")] - pub struct SupportsInterfaceCall { - pub interface_id: [u8; 4], + #[ethcall(name = "transferFrom", abi = "transferFrom(address,address,uint256)")] + pub struct TransferFromCall { + pub from: ::ethers::core::types::Address, + pub to: ::ethers::core::types::Address, + pub token_id: ::ethers::core::types::U256, } ///Container type for all input parameters for the `transferOwnership` function with signature `transferOwnership(address)` and selector `0xf2fde38b` #[derive( @@ -18569,6 +19923,7 @@ pub mod staking { AdminStakeForUser(AdminStakeForUserCall), AdminUnfreezeForUser(AdminUnfreezeForUserCall), AdvanceEpoch(AdvanceEpochCall), + Approve(ApproveCall), BalanceOf(BalanceOfCall), CalculateRewardsPerDay(CalculateRewardsPerDayCall), CalculateStakeWeight(CalculateStakeWeightCall), @@ -18607,6 +19962,7 @@ pub mod staking { GetAllReserveValidators(GetAllReserveValidatorsCall), GetAllUnkickedValidators(GetAllUnkickedValidatorsCall), GetAllValidators(GetAllValidatorsCall), + GetApproved(GetApprovedCall), GetAttestedPubKey(GetAttestedPubKeyCall), GetCurrentRealmIdForStakerAddress(GetCurrentRealmIdForStakerAddressCall), GetDelegatedStakersWithUnfreezingStakes( @@ -18615,6 +19971,7 @@ pub mod staking { GetDelegatedStakersWithUnfreezingStakesCount( GetDelegatedStakersWithUnfreezingStakesCountCall, ), + GetEmptyStakeRecordSlots(GetEmptyStakeRecordSlotsCall), GetKeySet(GetKeySetCall), GetKeyTypes(GetKeyTypesCall), GetKickedValidators(GetKickedValidatorsCall), @@ -18675,6 +20032,7 @@ pub mod staking { IsActiveValidatorByNodeAddressForNextEpochCall, ), IsActiveValidatorForNextEpoch(IsActiveValidatorForNextEpochCall), + IsApprovedForAll(IsApprovedForAllCall), IsReadyForNextEpoch(IsReadyForNextEpochCall), IsRecentValidator(IsRecentValidatorCall), IsRecentValidatorWithRealmId(IsRecentValidatorWithRealmIdCall), @@ -18701,6 +20059,8 @@ pub mod staking { NumRealms(NumRealmsCall), OperatorAddressToStakerAddress(OperatorAddressToStakerAddressCall), Owner(OwnerCall), + OwnerOf(OwnerOfCall), + OwnershipChange(OwnershipChangeCall), PermittedRealmsForValidator(PermittedRealmsForValidatorCall), PermittedValidators(PermittedValidatorsCall), Pow(PowCall), @@ -18714,6 +20074,9 @@ pub mod staking { RequestToJoinAsNode(RequestToJoinAsNodeCall), RequestToLeave(RequestToLeaveCall), RequestToLeaveAsNode(RequestToLeaveAsNodeCall), + SafeTransferFrom(SafeTransferFromCall), + SafeTransferFromWithFromAndToAndData(SafeTransferFromWithFromAndToAndDataCall), + SetApprovalForAll(SetApprovalForAllCall), SetComplaintConfig(SetComplaintConfigCall), SetConfig(SetConfigCall), SetContractResolver(SetContractResolverCall), @@ -18739,9 +20102,14 @@ pub mod staking { SignalReadyForNextEpoch(SignalReadyForNextEpochCall), SplitStakeRecord(SplitStakeRecordCall), Stake(StakeCall), + StakeBalanceOf(StakeBalanceOfCall), StakerToValidatorsTheyStakedTo(StakerToValidatorsTheyStakedToCall), State(StateCall), SupportsInterface(SupportsInterfaceCall), + TokenOfOwnerByIndex(TokenOfOwnerByIndexCall), + TokenToStakeRecord(TokenToStakeRecordCall), + TotalSupply(TotalSupplyCall), + TransferFrom(TransferFromCall), TransferOwnership(TransferOwnershipCall), UnfreezeStake(UnfreezeStakeCall), ValidatorSelfStakeWillExpire(ValidatorSelfStakeWillExpireCall), @@ -18812,6 +20180,11 @@ pub mod staking { ) { return Ok(Self::AdvanceEpoch(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::Approve(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -18972,6 +20345,11 @@ pub mod staking { ) { return Ok(Self::GetAllValidators(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::GetApproved(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -18992,6 +20370,11 @@ pub mod staking { ) { return Ok(Self::GetDelegatedStakersWithUnfreezingStakesCount(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::GetEmptyStakeRecordSlots(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -19272,6 +20655,11 @@ pub mod staking { ) { return Ok(Self::IsActiveValidatorForNextEpoch(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::IsApprovedForAll(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -19392,6 +20780,16 @@ pub mod staking { ) { return Ok(Self::Owner(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::OwnerOf(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::OwnershipChange(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -19457,6 +20855,21 @@ pub mod staking { ) { return Ok(Self::RequestToLeaveAsNode(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SafeTransferFrom(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SafeTransferFromWithFromAndToAndData(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetApprovalForAll(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -19582,6 +20995,11 @@ pub mod staking { ) { return Ok(Self::Stake(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::StakeBalanceOf(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -19597,6 +21015,26 @@ pub mod staking { ) { return Ok(Self::SupportsInterface(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::TokenOfOwnerByIndex(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::TokenToStakeRecord(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::TotalSupply(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::TransferFrom(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -19671,6 +21109,7 @@ pub mod staking { Self::AdvanceEpoch(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::Approve(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::BalanceOf(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -19761,6 +21200,9 @@ pub mod staking { Self::GetAllValidators(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::GetApproved(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::GetAttestedPubKey(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -19773,6 +21215,9 @@ pub mod staking { Self::GetDelegatedStakersWithUnfreezingStakesCount(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::GetEmptyStakeRecordSlots(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::GetKeySet(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -19941,6 +21386,9 @@ pub mod staking { Self::IsActiveValidatorForNextEpoch(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::IsApprovedForAll(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::IsReadyForNextEpoch(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -20009,6 +21457,10 @@ pub mod staking { ::ethers::core::abi::AbiEncode::encode(element) } Self::Owner(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::OwnerOf(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::OwnershipChange(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::PermittedRealmsForValidator(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -20046,6 +21498,15 @@ pub mod staking { Self::RequestToLeaveAsNode(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::SafeTransferFrom(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SafeTransferFromWithFromAndToAndData(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::SetApprovalForAll(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::SetComplaintConfig(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -20119,6 +21580,9 @@ pub mod staking { ::ethers::core::abi::AbiEncode::encode(element) } Self::Stake(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::StakeBalanceOf(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::StakerToValidatorsTheyStakedTo(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -20126,6 +21590,18 @@ pub mod staking { Self::SupportsInterface(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::TokenOfOwnerByIndex(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TokenToStakeRecord(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TotalSupply(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TransferFrom(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::TransferOwnership(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -20180,6 +21656,7 @@ pub mod staking { ::core::fmt::Display::fmt(element, f) } Self::AdvanceEpoch(element) => ::core::fmt::Display::fmt(element, f), + Self::Approve(element) => ::core::fmt::Display::fmt(element, f), Self::BalanceOf(element) => ::core::fmt::Display::fmt(element, f), Self::CalculateRewardsPerDay(element) => { ::core::fmt::Display::fmt(element, f) @@ -20250,6 +21727,7 @@ pub mod staking { ::core::fmt::Display::fmt(element, f) } Self::GetAllValidators(element) => ::core::fmt::Display::fmt(element, f), + Self::GetApproved(element) => ::core::fmt::Display::fmt(element, f), Self::GetAttestedPubKey(element) => ::core::fmt::Display::fmt(element, f), Self::GetCurrentRealmIdForStakerAddress(element) => { ::core::fmt::Display::fmt(element, f) @@ -20260,6 +21738,9 @@ pub mod staking { Self::GetDelegatedStakersWithUnfreezingStakesCount(element) => { ::core::fmt::Display::fmt(element, f) } + Self::GetEmptyStakeRecordSlots(element) => { + ::core::fmt::Display::fmt(element, f) + } Self::GetKeySet(element) => ::core::fmt::Display::fmt(element, f), Self::GetKeyTypes(element) => ::core::fmt::Display::fmt(element, f), Self::GetKickedValidators(element) => { @@ -20396,6 +21877,7 @@ pub mod staking { Self::IsActiveValidatorForNextEpoch(element) => { ::core::fmt::Display::fmt(element, f) } + Self::IsApprovedForAll(element) => ::core::fmt::Display::fmt(element, f), Self::IsReadyForNextEpoch(element) => { ::core::fmt::Display::fmt(element, f) } @@ -20446,6 +21928,8 @@ pub mod staking { ::core::fmt::Display::fmt(element, f) } Self::Owner(element) => ::core::fmt::Display::fmt(element, f), + Self::OwnerOf(element) => ::core::fmt::Display::fmt(element, f), + Self::OwnershipChange(element) => ::core::fmt::Display::fmt(element, f), Self::PermittedRealmsForValidator(element) => { ::core::fmt::Display::fmt(element, f) } @@ -20473,6 +21957,11 @@ pub mod staking { Self::RequestToLeaveAsNode(element) => { ::core::fmt::Display::fmt(element, f) } + Self::SafeTransferFrom(element) => ::core::fmt::Display::fmt(element, f), + Self::SafeTransferFromWithFromAndToAndData(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::SetApprovalForAll(element) => ::core::fmt::Display::fmt(element, f), Self::SetComplaintConfig(element) => { ::core::fmt::Display::fmt(element, f) } @@ -20524,11 +22013,20 @@ pub mod staking { } Self::SplitStakeRecord(element) => ::core::fmt::Display::fmt(element, f), Self::Stake(element) => ::core::fmt::Display::fmt(element, f), + Self::StakeBalanceOf(element) => ::core::fmt::Display::fmt(element, f), Self::StakerToValidatorsTheyStakedTo(element) => { ::core::fmt::Display::fmt(element, f) } Self::State(element) => ::core::fmt::Display::fmt(element, f), Self::SupportsInterface(element) => ::core::fmt::Display::fmt(element, f), + Self::TokenOfOwnerByIndex(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TokenToStakeRecord(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TotalSupply(element) => ::core::fmt::Display::fmt(element, f), + Self::TransferFrom(element) => ::core::fmt::Display::fmt(element, f), Self::TransferOwnership(element) => ::core::fmt::Display::fmt(element, f), Self::UnfreezeStake(element) => ::core::fmt::Display::fmt(element, f), Self::ValidatorSelfStakeWillExpire(element) => { @@ -20601,6 +22099,11 @@ pub mod staking { Self::AdvanceEpoch(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: ApproveCall) -> Self { + Self::Approve(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: BalanceOfCall) -> Self { Self::BalanceOf(value) @@ -20764,6 +22267,11 @@ pub mod staking { Self::GetAllValidators(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: GetApprovedCall) -> Self { + Self::GetApproved(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: GetAttestedPubKeyCall) -> Self { Self::GetAttestedPubKey(value) @@ -20786,6 +22294,11 @@ pub mod staking { Self::GetDelegatedStakersWithUnfreezingStakesCount(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: GetEmptyStakeRecordSlotsCall) -> Self { + Self::GetEmptyStakeRecordSlots(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: GetKeySetCall) -> Self { Self::GetKeySet(value) @@ -21068,6 +22581,11 @@ pub mod staking { Self::IsActiveValidatorForNextEpoch(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: IsApprovedForAllCall) -> Self { + Self::IsApprovedForAll(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: IsReadyForNextEpochCall) -> Self { Self::IsReadyForNextEpoch(value) @@ -21189,6 +22707,16 @@ pub mod staking { Self::Owner(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: OwnerOfCall) -> Self { + Self::OwnerOf(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: OwnershipChangeCall) -> Self { + Self::OwnershipChange(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: PermittedRealmsForValidatorCall) -> Self { Self::PermittedRealmsForValidator(value) @@ -21254,6 +22782,22 @@ pub mod staking { Self::RequestToLeaveAsNode(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: SafeTransferFromCall) -> Self { + Self::SafeTransferFrom(value) + } + } + impl ::core::convert::From + for StakingCalls { + fn from(value: SafeTransferFromWithFromAndToAndDataCall) -> Self { + Self::SafeTransferFromWithFromAndToAndData(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: SetApprovalForAllCall) -> Self { + Self::SetApprovalForAll(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: SetComplaintConfigCall) -> Self { Self::SetComplaintConfig(value) @@ -21379,6 +22923,11 @@ pub mod staking { Self::Stake(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: StakeBalanceOfCall) -> Self { + Self::StakeBalanceOf(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: StakerToValidatorsTheyStakedToCall) -> Self { Self::StakerToValidatorsTheyStakedTo(value) @@ -21394,6 +22943,26 @@ pub mod staking { Self::SupportsInterface(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: TokenOfOwnerByIndexCall) -> Self { + Self::TokenOfOwnerByIndex(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TokenToStakeRecordCall) -> Self { + Self::TokenToStakeRecord(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TotalSupplyCall) -> Self { + Self::TotalSupply(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TransferFromCall) -> Self { + Self::TransferFrom(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: TransferOwnershipCall) -> Self { Self::TransferOwnership(value) @@ -21767,6 +23336,20 @@ pub mod staking { pub struct GetAllValidatorsReturn( pub ::std::vec::Vec<::ethers::core::types::Address>, ); + ///Container type for all return fields from the `getApproved` function with signature `getApproved(uint256)` and selector `0x081812fc` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GetApprovedReturn(pub ::ethers::core::types::Address); ///Container type for all return fields from the `getAttestedPubKey` function with signature `getAttestedPubKey(address)` and selector `0xe9332ea7` #[derive( Clone, @@ -21827,6 +23410,20 @@ pub mod staking { pub struct GetDelegatedStakersWithUnfreezingStakesCountReturn( pub ::ethers::core::types::U256, ); + ///Container type for all return fields from the `getEmptyStakeRecordSlots` function with signature `getEmptyStakeRecordSlots(address,address)` and selector `0xa6f67c51` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GetEmptyStakeRecordSlotsReturn(pub ::ethers::core::types::U256); ///Container type for all return fields from the `getKeySet` function with signature `getKeySet(string)` and selector `0xa305e5fe` #[derive( Clone, @@ -22272,7 +23869,7 @@ pub mod staking { Hash )] pub struct GetThresholdReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `getTimelockInEpoch` function with signature `getTimelockInEpoch(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address),uint256)` and selector `0xf16bbde3` + ///Container type for all return fields from the `getTimelockInEpoch` function with signature `getTimelockInEpoch(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)` and selector `0x2db912e4` #[derive( Clone, ::ethers::contract::EthAbiType, @@ -22314,7 +23911,7 @@ pub mod staking { Hash )] pub struct GetTokenPriceReturn(pub ::ethers::core::types::U256); - ///Container type for all return fields from the `getTokensStaked` function with signature `getTokensStaked(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address),uint256)` and selector `0x5e91a664` + ///Container type for all return fields from the `getTokensStaked` function with signature `getTokensStaked(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)` and selector `0x0fd78304` #[derive( Clone, ::ethers::contract::EthAbiType, @@ -22561,6 +24158,20 @@ pub mod staking { Hash )] pub struct IsActiveValidatorForNextEpochReturn(pub bool); + ///Container type for all return fields from the `isApprovedForAll` function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct IsApprovedForAllReturn(pub bool); ///Container type for all return fields from the `isReadyForNextEpoch` function with signature `isReadyForNextEpoch(uint256)` and selector `0x7fecc451` #[derive( Clone, @@ -22859,6 +24470,34 @@ pub mod staking { pub struct OwnerReturn { pub owner: ::ethers::core::types::Address, } + ///Container type for all return fields from the `ownerOf` function with signature `ownerOf(uint256)` and selector `0x6352211e` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct OwnerOfReturn(pub ::ethers::core::types::Address); + ///Container type for all return fields from the `ownershipChange` function with signature `ownershipChange(uint256)` and selector `0x23857d51` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct OwnershipChangeReturn(pub ::ethers::core::types::U256); ///Container type for all return fields from the `permittedRealmsForValidator` function with signature `permittedRealmsForValidator(address)` and selector `0xe718ff4c` #[derive( Clone, @@ -22947,6 +24586,20 @@ pub mod staking { Hash )] pub struct ShouldKickValidatorReturn(pub bool); + ///Container type for all return fields from the `stakeBalanceOf` function with signature `stakeBalanceOf(address)` and selector `0xaf46aa08` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct StakeBalanceOfReturn(pub ::ethers::core::types::U256); ///Container type for all return fields from the `stakerToValidatorsTheyStakedTo` function with signature `stakerToValidatorsTheyStakedTo(address)` and selector `0x6817d36e` #[derive( Clone, @@ -22991,6 +24644,48 @@ pub mod staking { Hash )] pub struct SupportsInterfaceReturn(pub bool); + ///Container type for all return fields from the `tokenOfOwnerByIndex` function with signature `tokenOfOwnerByIndex(address,uint256)` and selector `0x2f745c59` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct TokenOfOwnerByIndexReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `tokenToStakeRecord` function with signature `tokenToStakeRecord(uint256)` and selector `0xf0e2d9b5` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct TokenToStakeRecordReturn(pub MappedStakeRecord); + ///Container type for all return fields from the `totalSupply` function with signature `totalSupply()` and selector `0x18160ddd` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct TotalSupplyReturn(pub ::ethers::core::types::U256); ///Container type for all return fields from the `validatorSelfStakeWillExpire` function with signature `validatorSelfStakeWillExpire(uint256,address,bool)` and selector `0xbb8b437f` #[derive( Clone, @@ -23240,6 +24935,23 @@ pub mod staking { pub max_retries: ::ethers::core::types::U256, pub async_actions_enabled: bool, } + ///`MappedStakeRecord(address,uint256)` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct MappedStakeRecord { + pub operator_staker_address: ::ethers::core::types::Address, + pub stake_record_id: ::ethers::core::types::U256, + } ///`PubKeyMapping(address,(uint256,uint256))` #[derive( Clone, @@ -23324,7 +25036,7 @@ pub mod staking { pub validators_in_current_epoch: ::std::vec::Vec<::ethers::core::types::Address>, pub actual_epoch_length: ::ethers::core::types::U256, } - ///`StakeRecord(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address)` + ///`StakeRecord(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256)` #[derive( Clone, ::ethers::contract::EthAbiType, @@ -23348,6 +25060,7 @@ pub mod staking { pub loaded: bool, pub frozen: bool, pub attribution_address: ::ethers::core::types::Address, + pub token_id: ::ethers::core::types::U256, } ///`UncompressedK256Key(uint256,uint256)` #[derive( From 0d1919a7ba22ade2c984cf0fafb1dd5676a3d184 Mon Sep 17 00:00:00 2001 From: Howard Tam Date: Fri, 28 Nov 2025 20:31:51 -0800 Subject: [PATCH 09/18] Deploy StakingNFTFacet --- blockchain/contracts/scripts/deploy_lit_node_contracts.js | 1 + 1 file changed, 1 insertion(+) diff --git a/blockchain/contracts/scripts/deploy_lit_node_contracts.js b/blockchain/contracts/scripts/deploy_lit_node_contracts.js index 499a91b..4764a60 100644 --- a/blockchain/contracts/scripts/deploy_lit_node_contracts.js +++ b/blockchain/contracts/scripts/deploy_lit_node_contracts.js @@ -194,6 +194,7 @@ async function deployLitNodeContracts(deployNodeConfig) { 'StakingAcrossRealmsFacet', 'StakingKeySetsFacet', 'StakingAdminFacet', + 'StakingNFTFacet', ], false, deployNodeConfig.verifyContracts From 7d542646d2ecd18ca98549e159389f1a0b39f285 Mon Sep 17 00:00:00 2001 From: Howard Tam Date: Mon, 1 Dec 2025 11:43:41 -0800 Subject: [PATCH 10/18] Fix tests --- .../Staking/FunctionSelectorHelper.t.sol | 40 +++++++++++++++++++ .../lit-node/Staking/SetupAndUtils.t.sol | 12 +++++- .../domain-wallets/DomainWalletRegistry.ts | 1 + .../contracts/test/lit-node/BackupRecovery.js | 1 + blockchain/contracts/test/lit-node/Ledger.js | 1 + .../contracts/test/lit-node/PKPHelper.js | 1 + blockchain/contracts/test/lit-node/PKPNFT.js | 1 + .../contracts/test/lit-node/PKPPermissions.js | 1 + .../contracts/test/lit-node/PriceFeed.js | 1 + .../contracts/test/lit-node/PubkeyRouter.js | 1 + blockchain/contracts/test/lit-node/Staking.js | 1 + 11 files changed, 60 insertions(+), 1 deletion(-) diff --git a/blockchain/contracts/contracts/lit-node/Staking/FunctionSelectorHelper.t.sol b/blockchain/contracts/contracts/lit-node/Staking/FunctionSelectorHelper.t.sol index ef89f5c..5991b1d 100644 --- a/blockchain/contracts/contracts/lit-node/Staking/FunctionSelectorHelper.t.sol +++ b/blockchain/contracts/contracts/lit-node/Staking/FunctionSelectorHelper.t.sol @@ -371,6 +371,46 @@ contract FunctionSelectorHelper { return selectors; } + + function getSignaturesStakingNFTFacet() + public + pure + returns (string[] memory) + { + string[] memory functionSignatures = new string[](13); + functionSignatures[0] = "balanceOf(address)"; + functionSignatures[1] = "ownerOf(uint256)"; + functionSignatures[ + 2 + ] = "safeTransferFrom(address,address,uint256,bytes)"; + functionSignatures[3] = "safeTransferFrom(address,address,uint256)"; + functionSignatures[4] = "transferFrom(address,address,uint256)"; + functionSignatures[5] = "approve(address,uint256)"; + functionSignatures[6] = "setApprovalForAll(address,bool)"; + functionSignatures[7] = "tokenOfOwnerByIndex(address,uint256)"; + functionSignatures[8] = "totalSupply()"; + functionSignatures[9] = "getApproved(uint256)"; + functionSignatures[10] = "isApprovedForAll(address,address)"; + functionSignatures[11] = "ownershipChange(uint256)"; + functionSignatures[12] = "tokenToStakeRecord(uint256)"; + + return functionSignatures; + } + + function getSelectorsStakingNFTFacet() + public + pure + returns (bytes4[] memory) + { + string[] memory functionSignatures = getSignaturesStakingNFTFacet(); + bytes4[] memory selectors = new bytes4[](functionSignatures.length); + + for (uint256 i = 0; i < functionSignatures.length; i++) { + selectors[i] = bytes4(keccak256(bytes(functionSignatures[i]))); + } + + return selectors; + } } contract PriceFeedFunctionSelectorHelper { diff --git a/blockchain/contracts/contracts/lit-node/Staking/SetupAndUtils.t.sol b/blockchain/contracts/contracts/lit-node/Staking/SetupAndUtils.t.sol index e597f9f..df03035 100644 --- a/blockchain/contracts/contracts/lit-node/Staking/SetupAndUtils.t.sol +++ b/blockchain/contracts/contracts/lit-node/Staking/SetupAndUtils.t.sol @@ -9,6 +9,7 @@ import { StakingValidatorFacet } from "../Staking/StakingValidatorFacet.sol"; import { StakingAcrossRealmsFacet } from "../Staking/StakingAcrossRealmsFacet.sol"; import { StakingVersionFacet } from "../Staking/StakingVersionFacet.sol"; import { StakingUtilsLib } from "../Staking/StakingUtilsLib.sol"; +import { StakingNFTFacet } from "../Staking/StakingNFTFacet.sol"; import { ContractResolver } from "../../lit-core/ContractResolver.sol"; import { Staking, StakingArgs } from "../Staking.sol"; import { DiamondInit } from "../../upgradeInitializers/DiamondInit.sol"; @@ -30,6 +31,7 @@ abstract contract SetupAndUtils is Test { StakingValidatorFacet stakingValidatorFacet; StakingAcrossRealmsFacet stakingAcrossRealmsFacet; StakingVersionFacet stakingVersionFacet; + StakingNFTFacet stakingNFTFacet; LITToken token; FunctionSelectorHelper functionSelectorHelper; @@ -75,6 +77,7 @@ abstract contract SetupAndUtils is Test { stakingValidatorFacet = new StakingValidatorFacet(); stakingAcrossRealmsFacet = new StakingAcrossRealmsFacet(); stakingVersionFacet = new StakingVersionFacet(); + stakingNFTFacet = new StakingNFTFacet(); priceFeedFacet = new PriceFeedFacet(); @@ -85,7 +88,7 @@ abstract contract SetupAndUtils is Test { token.mint(address(this), 1_000_000_000 ether); // Cut the staking diamond. - IDiamond.FacetCut[] memory facetCuts = new IDiamond.FacetCut[](6); + IDiamond.FacetCut[] memory facetCuts = new IDiamond.FacetCut[](7); facetCuts[0] = IDiamond.FacetCut({ facetAddress: address(stakingFacet), action: IDiamond.FacetCutAction.Add, @@ -121,6 +124,12 @@ abstract contract SetupAndUtils is Test { functionSelectors: functionSelectorHelper .getSelectorsStakingVersionFacet() }); + facetCuts[6] = IDiamond.FacetCut({ + facetAddress: address(stakingNFTFacet), + action: IDiamond.FacetCutAction.Add, + functionSelectors: functionSelectorHelper + .getSelectorsStakingNFTFacet() + }); StakingArgs memory stakingArgs = StakingArgs({ owner: address(this), @@ -137,6 +146,7 @@ abstract contract SetupAndUtils is Test { stakingViewsFacet = StakingViewsFacet(address(staking)); stakingAdminFacet = StakingAdminFacet(address(staking)); stakingVersionFacet = StakingVersionFacet(address(staking)); + stakingNFTFacet = StakingNFTFacet(address(staking)); // Cut the price feed diamond. IDiamond.FacetCut[] memory priceFeedFacetCuts = new IDiamond.FacetCut[]( diff --git a/blockchain/contracts/test/domain-wallets/DomainWalletRegistry.ts b/blockchain/contracts/test/domain-wallets/DomainWalletRegistry.ts index fbe97fc..b52c4aa 100644 --- a/blockchain/contracts/test/domain-wallets/DomainWalletRegistry.ts +++ b/blockchain/contracts/test/domain-wallets/DomainWalletRegistry.ts @@ -155,6 +155,7 @@ describe('DomainWalletRegistry', function () { 'StakingAdminFacet', 'StakingAcrossRealmsFacet', 'StakingKeySetsFacet', + 'StakingNFTFacet', ], verifyContracts: false, waitForDeployment: false, diff --git a/blockchain/contracts/test/lit-node/BackupRecovery.js b/blockchain/contracts/test/lit-node/BackupRecovery.js index bc90900..c6c2ff6 100644 --- a/blockchain/contracts/test/lit-node/BackupRecovery.js +++ b/blockchain/contracts/test/lit-node/BackupRecovery.js @@ -82,6 +82,7 @@ describe('BackupRecovery', function () { 'StakingVersionFacet', 'StakingAcrossRealmsFacet', 'StakingKeySetsFacet', + 'StakingNFTFacet', ], verifyContracts: false, waitForDeployment: false, diff --git a/blockchain/contracts/test/lit-node/Ledger.js b/blockchain/contracts/test/lit-node/Ledger.js index 2bcfd4c..d4dc3b8 100644 --- a/blockchain/contracts/test/lit-node/Ledger.js +++ b/blockchain/contracts/test/lit-node/Ledger.js @@ -46,6 +46,7 @@ describe('Ledger', function () { 'StakingVersionFacet', 'StakingAdminFacet', 'StakingAcrossRealmsFacet', + 'StakingNFTFacet', ], verifyContracts: false, waitForDeployment: false, diff --git a/blockchain/contracts/test/lit-node/PKPHelper.js b/blockchain/contracts/test/lit-node/PKPHelper.js index 464914b..10a7ffd 100644 --- a/blockchain/contracts/test/lit-node/PKPHelper.js +++ b/blockchain/contracts/test/lit-node/PKPHelper.js @@ -98,6 +98,7 @@ describe('PKPHelper', function () { 'StakingAdminFacet', 'StakingAcrossRealmsFacet', 'StakingKeySetsFacet', + 'StakingNFTFacet', ], verifyContracts: false, waitForDeployment: false, diff --git a/blockchain/contracts/test/lit-node/PKPNFT.js b/blockchain/contracts/test/lit-node/PKPNFT.js index 0af6d78..3acaa70 100644 --- a/blockchain/contracts/test/lit-node/PKPNFT.js +++ b/blockchain/contracts/test/lit-node/PKPNFT.js @@ -108,6 +108,7 @@ describe('PKPNFT', function () { 'StakingAcrossRealmsFacet', 'StakingAdminFacet', 'StakingKeySetsFacet', + 'StakingNFTFacet', ], verifyContracts: false, waitForDeployment: false, diff --git a/blockchain/contracts/test/lit-node/PKPPermissions.js b/blockchain/contracts/test/lit-node/PKPPermissions.js index 815e05e..9b9e524 100644 --- a/blockchain/contracts/test/lit-node/PKPPermissions.js +++ b/blockchain/contracts/test/lit-node/PKPPermissions.js @@ -104,6 +104,7 @@ describe('PKPPermissions', function () { 'StakingAcrossRealmsFacet', 'StakingAdminFacet', 'StakingKeySetsFacet', + 'StakingNFTFacet', ], verifyContracts: false, waitForDeployment: false, diff --git a/blockchain/contracts/test/lit-node/PriceFeed.js b/blockchain/contracts/test/lit-node/PriceFeed.js index 44891ba..51f2c61 100644 --- a/blockchain/contracts/test/lit-node/PriceFeed.js +++ b/blockchain/contracts/test/lit-node/PriceFeed.js @@ -59,6 +59,7 @@ describe('PriceFeed', function () { 'StakingVersionFacet', 'StakingAdminFacet', 'StakingAcrossRealmsFacet', + 'StakingNFTFacet', ], verifyContracts: false, waitForDeployment: false, diff --git a/blockchain/contracts/test/lit-node/PubkeyRouter.js b/blockchain/contracts/test/lit-node/PubkeyRouter.js index 9f712b8..8dc19dd 100644 --- a/blockchain/contracts/test/lit-node/PubkeyRouter.js +++ b/blockchain/contracts/test/lit-node/PubkeyRouter.js @@ -100,6 +100,7 @@ describe('PubkeyRouter', function () { 'StakingAcrossRealmsFacet', 'StakingAdminFacet', 'StakingKeySetsFacet', + 'StakingNFTFacet', ], verifyContracts: false, waitForDeployment: false, diff --git a/blockchain/contracts/test/lit-node/Staking.js b/blockchain/contracts/test/lit-node/Staking.js index 4d2b992..47b14ce 100644 --- a/blockchain/contracts/test/lit-node/Staking.js +++ b/blockchain/contracts/test/lit-node/Staking.js @@ -78,6 +78,7 @@ describe('Staking', function () { 'StakingAcrossRealmsFacet', 'StakingKeySetsFacet', 'StakingAdminFacet', + 'StakingNFTFacet', ], verifyContracts: false, waitForDeployment: false, From 3c4f12e63c80749326248e41efdfa1fc81b76d49 Mon Sep 17 00:00:00 2001 From: Howard Tam Date: Mon, 1 Dec 2025 14:55:04 -0800 Subject: [PATCH 11/18] Fix tests --- .../lit-node/Staking/FunctionSelectorHelper.t.sol | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/blockchain/contracts/contracts/lit-node/Staking/FunctionSelectorHelper.t.sol b/blockchain/contracts/contracts/lit-node/Staking/FunctionSelectorHelper.t.sol index 5991b1d..24e6f03 100644 --- a/blockchain/contracts/contracts/lit-node/Staking/FunctionSelectorHelper.t.sol +++ b/blockchain/contracts/contracts/lit-node/Staking/FunctionSelectorHelper.t.sol @@ -56,7 +56,7 @@ contract FunctionSelectorHelper { returns (string[] memory) { // Define the function signatures - string[] memory functionSignatures = new string[](71); + string[] memory functionSignatures = new string[](72); // View functions that are either public or external. functionSignatures[0] = "epoch(uint256)"; @@ -120,14 +120,14 @@ contract FunctionSelectorHelper { ] = "getActiveUnkickedValidatorStructsAndCounts(uint256)"; functionSignatures[ 43 - ] = "getTimelockInEpoch(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address),uint256)"; + ] = "getTimelockInEpoch(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)"; functionSignatures[ 44 ] = "getStakeWeightInEpoch(address,uint256,address,uint256)"; functionSignatures[45] = "calculateStakeWeight(uint256,uint256)"; functionSignatures[ 46 - ] = "getTokensStaked(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address),uint256)"; + ] = "getTokensStaked(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)"; functionSignatures[47] = "getRewardEpochNumber(uint256)"; functionSignatures[48] = "pow(uint256,uint256)"; functionSignatures[ @@ -162,6 +162,8 @@ contract FunctionSelectorHelper { functionSignatures[ 70 ] = "getUnfrozenStakeCountForUser(address,address)"; + functionSignatures[71] = "getEmptyStakeRecordSlots(address,address)"; + return functionSignatures; } From 24d528dc57952016de45df7d6911b24cca731a68 Mon Sep 17 00:00:00 2001 From: Howard Tam Date: Tue, 2 Dec 2025 15:23:32 -0800 Subject: [PATCH 12/18] Implement some StakingNFTFacet tests --- .../Staking/FunctionSelectorHelper.t.sol | 3 +- .../lit-node/Staking/StakingNFTFacet.t.sol | 339 ++++++++++++++++++ .../lit-node/Staking/StakingViewsFacet.sol | 26 ++ 3 files changed, 367 insertions(+), 1 deletion(-) create mode 100644 blockchain/contracts/contracts/lit-node/Staking/StakingNFTFacet.t.sol diff --git a/blockchain/contracts/contracts/lit-node/Staking/FunctionSelectorHelper.t.sol b/blockchain/contracts/contracts/lit-node/Staking/FunctionSelectorHelper.t.sol index 24e6f03..4045420 100644 --- a/blockchain/contracts/contracts/lit-node/Staking/FunctionSelectorHelper.t.sol +++ b/blockchain/contracts/contracts/lit-node/Staking/FunctionSelectorHelper.t.sol @@ -56,7 +56,7 @@ contract FunctionSelectorHelper { returns (string[] memory) { // Define the function signatures - string[] memory functionSignatures = new string[](72); + string[] memory functionSignatures = new string[](73); // View functions that are either public or external. functionSignatures[0] = "epoch(uint256)"; @@ -163,6 +163,7 @@ contract FunctionSelectorHelper { 70 ] = "getUnfrozenStakeCountForUser(address,address)"; functionSignatures[71] = "getEmptyStakeRecordSlots(address,address)"; + functionSignatures[72] = "getMostRecentStakeRecord(address,address)"; return functionSignatures; } diff --git a/blockchain/contracts/contracts/lit-node/Staking/StakingNFTFacet.t.sol b/blockchain/contracts/contracts/lit-node/Staking/StakingNFTFacet.t.sol new file mode 100644 index 0000000..a031110 --- /dev/null +++ b/blockchain/contracts/contracts/lit-node/Staking/StakingNFTFacet.t.sol @@ -0,0 +1,339 @@ +// SPDX-License-Identifier: UNLICENSED +pragma solidity ^0.8.17; + +import { Test, console2 } from "lib/forge-std/src/Test.sol"; +import { SetupAndUtils } from "./SetupAndUtils.t.sol"; +import { LibStakingStorage } from "./LibStakingStorage.sol"; +import { StakingUtilsLib } from "./StakingUtilsLib.sol"; +import { StakingNFTFacet } from "./StakingNFTFacet.sol"; + +contract StakingNFTFacetTest is Test, SetupAndUtils { + function setUp() public { + baseSetup(); + } + + function test_Stake() public { + uint256 amount = 100 ether; + uint256 timeLock = 100 days; + + // Setup validators + address[] memory operatorStakers = _generateAddresses(4); + _setupValidators( + 1, + operatorStakers, + amount * 10, + amount, + timeLock, + _generateUint256s(4) + ); + + _assertNFTAssertions( + NFTAssertions({ + tokenOwner: operatorStakers[0], + tokenId: 1, + tokenBalance: 1, + operatorStakerAddress: operatorStakers[0], + tokenIndex: 0, + totalSupply: 4, + ownershipChanged: false, + stakeRecordId: 1 + }) + ); + } + + function test_StakeAndTransfer(bool isSafeTransfer) public { + uint256 amount = 100 ether; + uint256 timeLock = 100 days; + + // Setup validators + address[] memory operatorStakers = _generateAddresses(4); + _setupValidators( + 1, + operatorStakers, + amount * 10, + amount, + timeLock, + _generateUint256s(4) + ); + + // Setup delegating staker + address delegatingStaker = address(0x999); + _fundAddressWithTokensAndApprove(delegatingStaker, amount); + + // Delegating staker stakes with a random validator + vm.prank(delegatingStaker); + stakingFacet.stake(amount, timeLock, operatorStakers[0]); + + _assertNFTAssertions( + NFTAssertions({ + tokenOwner: delegatingStaker, + tokenId: 5, + tokenBalance: 1, + operatorStakerAddress: operatorStakers[0], + tokenIndex: 0, + totalSupply: 5, + ownershipChanged: false, + stakeRecordId: 1 + }) + ); + + // Transfer the NFT to another address + address tokenReceiver = address(0x888); + _transferAndAssertNFTAssertions( + isSafeTransfer, + TransferNFTAssertions({ + tokenSender: delegatingStaker, + tokenReceiver: tokenReceiver, + tokenId: 5, + operatorStakerAddress: operatorStakers[0] + }) + ); + } + + function test_StakeAndTransfer_RevertNotOwner() public { + uint256 amount = 100 ether; + uint256 timeLock = 100 days; + + // Setup validators + address[] memory operatorStakers = _generateAddresses(4); + _setupValidators( + 1, + operatorStakers, + amount * 10, + amount, + timeLock, + _generateUint256s(4) + ); + + // Setup delegating staker + address delegatingStaker = address(0x999); + _fundAddressWithTokensAndApprove(delegatingStaker, amount); + + // Delegating staker stakes with a random validator + vm.prank(delegatingStaker); + stakingFacet.stake(amount, timeLock, operatorStakers[0]); + + // Transfer an NFT that is not owned by the delegating staker + vm.expectRevert(StakingNFTFacet.NotApprovedOrOwner.selector); + vm.prank(delegatingStaker); + stakingNFTFacet.transferFrom(delegatingStaker, address(0x888), 1); + } + + struct TransferNFTAssertions { + address tokenSender; + address tokenReceiver; + uint256 tokenId; + address operatorStakerAddress; + } + + struct NFTAssertions { + address tokenOwner; + uint256 tokenId; + uint256 tokenBalance; + address operatorStakerAddress; + uint256 tokenIndex; + uint256 totalSupply; + bool ownershipChanged; + uint256 stakeRecordId; + } + + function _transferAndAssertNFTAssertions( + bool isSafeTransfer, + TransferNFTAssertions memory transferNFTAssertions + ) private { + // Get sender and receiver details before the transfer + uint256 balanceOfSenderBefore = stakingNFTFacet.balanceOf( + transferNFTAssertions.tokenSender + ); + uint256 balanceOfReceiverBefore = stakingNFTFacet.balanceOf( + transferNFTAssertions.tokenReceiver + ); + uint256 totalSupplyBefore = stakingNFTFacet.totalSupply(); + uint256 ownershipChangeBefore = stakingNFTFacet.ownershipChange( + transferNFTAssertions.tokenId + ); + uint256 stakeRecordIdBefore = stakingNFTFacet + .tokenToStakeRecord(transferNFTAssertions.tokenId) + .stakeRecordId; + LibStakingStorage.StakeRecord + memory stakeRecordSenderBefore = stakingViewsFacet.getStakeRecord( + transferNFTAssertions.operatorStakerAddress, + stakeRecordIdBefore, + transferNFTAssertions.tokenSender + ); + LibStakingStorage.StakeRecord + memory mostRecentStakeRecordReceiverBefore = stakingViewsFacet + .getMostRecentStakeRecord( + transferNFTAssertions.tokenSender, + transferNFTAssertions.tokenReceiver + ); + + // Transfer the NFT + if (isSafeTransfer) { + vm.prank(transferNFTAssertions.tokenSender); + stakingNFTFacet.transferFrom( + transferNFTAssertions.tokenSender, + transferNFTAssertions.tokenReceiver, + transferNFTAssertions.tokenId + ); + } else { + vm.prank(transferNFTAssertions.tokenSender); + stakingNFTFacet.safeTransferFrom( + transferNFTAssertions.tokenSender, + transferNFTAssertions.tokenReceiver, + transferNFTAssertions.tokenId + ); + } + + // Assertions + assertEq( + stakingNFTFacet.balanceOf(transferNFTAssertions.tokenSender), + balanceOfSenderBefore - 1 + ); + assertEq( + stakingNFTFacet.balanceOf(transferNFTAssertions.tokenReceiver), + balanceOfReceiverBefore + 1 + ); + assertEq( + stakingNFTFacet.ownerOf(transferNFTAssertions.tokenId), + transferNFTAssertions.tokenReceiver + ); + assertEq( + stakingNFTFacet.tokenOfOwnerByIndex( + transferNFTAssertions.tokenReceiver, + balanceOfReceiverBefore + ), + transferNFTAssertions.tokenId + ); + assertEq(stakingNFTFacet.totalSupply(), totalSupplyBefore); + assertGt( + stakingNFTFacet.ownershipChange(transferNFTAssertions.tokenId), + ownershipChangeBefore + ); + assertEq( + stakingNFTFacet + .tokenToStakeRecord(transferNFTAssertions.tokenId) + .operatorStakerAddress, + transferNFTAssertions.operatorStakerAddress + ); + assertEq( + stakingNFTFacet + .tokenToStakeRecord(transferNFTAssertions.tokenId) + .stakeRecordId, + mostRecentStakeRecordReceiverBefore.id + 1 + ); + + // Expect revert when getting stake record for sender + vm.expectRevert( + abi.encodeWithSelector( + StakingUtilsLib.StakeRecordNotFound.selector, + mostRecentStakeRecordReceiverBefore.id + 1 + ) + ); + stakingViewsFacet.getStakeRecord( + transferNFTAssertions.operatorStakerAddress, + stakeRecordIdBefore, + transferNFTAssertions.tokenSender + ); + + // Expect success when getting stake record for receiver + LibStakingStorage.StakeRecord + memory stakeRecordReceiver = stakingViewsFacet.getStakeRecord( + transferNFTAssertions.operatorStakerAddress, + mostRecentStakeRecordReceiverBefore.id + 1, + transferNFTAssertions.tokenReceiver + ); + assertEq(stakeRecordReceiver.tokenId, transferNFTAssertions.tokenId); + + assertGe( + stakeRecordReceiver.lastUpdateTimestamp, + stakeRecordSenderBefore.lastUpdateTimestamp + ); + + // Assert stakerToValidatorsTheyStakedTo + { + address[] + memory stakerToValidatorsTheyStakedToSender = stakingViewsFacet + .stakerToValidatorsTheyStakedTo( + transferNFTAssertions.tokenSender + ); + address[] + memory stakerToValidatorsTheyStakedToReceiver = stakingViewsFacet + .stakerToValidatorsTheyStakedTo( + transferNFTAssertions.tokenReceiver + ); + for ( + uint256 i = 0; + i < stakerToValidatorsTheyStakedToSender.length; + i++ + ) { + if ( + stakerToValidatorsTheyStakedToSender[i] == + transferNFTAssertions.operatorStakerAddress + ) { + fail( + "Staker to validators they staked to sender contains operator staker address" + ); + } + } + bool receiverContainsOperatorStakerAddress = false; + for ( + uint256 i = 0; + i < stakerToValidatorsTheyStakedToReceiver.length; + i++ + ) { + if ( + stakerToValidatorsTheyStakedToReceiver[i] == + transferNFTAssertions.operatorStakerAddress + ) { + receiverContainsOperatorStakerAddress = true; + } + } + assertTrue(receiverContainsOperatorStakerAddress); + } + } + + function _assertNFTAssertions(NFTAssertions memory nftAssertions) private { + assertEq( + stakingNFTFacet.balanceOf(nftAssertions.tokenOwner), + nftAssertions.tokenBalance + ); + assertEq( + stakingNFTFacet.ownerOf(nftAssertions.tokenId), + nftAssertions.tokenOwner + ); + assertEq( + stakingNFTFacet.tokenOfOwnerByIndex( + nftAssertions.tokenOwner, + nftAssertions.tokenIndex + ), + nftAssertions.tokenId + ); + assertEq(stakingNFTFacet.totalSupply(), nftAssertions.totalSupply); + if (nftAssertions.ownershipChanged) { + assertGt(stakingNFTFacet.ownershipChange(nftAssertions.tokenId), 0); + } else { + assertEq(stakingNFTFacet.ownershipChange(nftAssertions.tokenId), 0); + } + assertEq( + stakingNFTFacet + .tokenToStakeRecord(nftAssertions.tokenId) + .operatorStakerAddress, + nftAssertions.operatorStakerAddress + ); + assertEq( + stakingNFTFacet + .tokenToStakeRecord(nftAssertions.tokenId) + .stakeRecordId, + nftAssertions.stakeRecordId + ); + + LibStakingStorage.StakeRecord memory stakeRecord = stakingViewsFacet + .getStakeRecord( + nftAssertions.operatorStakerAddress, + nftAssertions.stakeRecordId, + nftAssertions.tokenOwner + ); + assertEq(stakeRecord.tokenId, nftAssertions.tokenId); + } +} diff --git a/blockchain/contracts/contracts/lit-node/Staking/StakingViewsFacet.sol b/blockchain/contracts/contracts/lit-node/Staking/StakingViewsFacet.sol index 9b9a52f..70737da 100644 --- a/blockchain/contracts/contracts/lit-node/Staking/StakingViewsFacet.sol +++ b/blockchain/contracts/contracts/lit-node/Staking/StakingViewsFacet.sol @@ -590,6 +590,32 @@ contract StakingViewsFacet { revert StakingUtilsLib.StakeRecordNotFound(lastStakeRecordId); } + function getMostRecentStakeRecord( + address userStakerAddress, + address operatorStakerAddress + ) public view returns (LibStakingStorage.StakeRecord memory) { + LibStakingStorage.StakerVault memory vault = s().vaults[ + operatorStakerAddress + ][userStakerAddress]; + + uint256 highestStakeRecordId = 0; + for (uint i = 0; i < vault.stakes.length; i++) { + if ( + vault.stakes[i].loaded && + vault.stakes[i].id > highestStakeRecordId + ) { + highestStakeRecordId = vault.stakes[i].id; + } + } + + return + getStakeRecord( + operatorStakerAddress, + highestStakeRecordId, + userStakerAddress + ); + } + function getValidatorsDelegated( address user ) public view returns (uint256[] memory) { From ba81aee102c16f640de63c015ed0504b3678298e Mon Sep 17 00:00:00 2001 From: Howard Tam Date: Tue, 2 Dec 2025 20:03:19 -0800 Subject: [PATCH 13/18] Implement tests --- .../Staking/FunctionSelectorHelper.t.sol | 2 +- .../contracts/lit-node/Staking/Staking.t.sol | 2 +- .../lit-node/Staking/StakingFacet.sol | 6 +- .../lit-node/Staking/StakingNFTFacet.sol | 9 +- .../lit-node/Staking/StakingNFTFacet.t.sol | 1114 ++++++++++++++++- blockchain/contracts/test/lit-node/Staking.js | 22 +- 6 files changed, 1091 insertions(+), 64 deletions(-) diff --git a/blockchain/contracts/contracts/lit-node/Staking/FunctionSelectorHelper.t.sol b/blockchain/contracts/contracts/lit-node/Staking/FunctionSelectorHelper.t.sol index 4045420..e4978ae 100644 --- a/blockchain/contracts/contracts/lit-node/Staking/FunctionSelectorHelper.t.sol +++ b/blockchain/contracts/contracts/lit-node/Staking/FunctionSelectorHelper.t.sol @@ -30,7 +30,7 @@ contract FunctionSelectorHelper { // View functions that are either public or external. These are included here not // for invariant testing, but for interacting via the Handler-based invariant tests. - functionSignatures[14] = "stakeBalanceOf(address)"; + functionSignatures[14] = "selfStakeBalanceOf(address)"; functionSignatures[15] = "getMinimumStake()"; functionSignatures[16] = "getMinimumSelfStake()"; functionSignatures[17] = "getMaximumStake()"; diff --git a/blockchain/contracts/contracts/lit-node/Staking/Staking.t.sol b/blockchain/contracts/contracts/lit-node/Staking/Staking.t.sol index 847a647..768f896 100644 --- a/blockchain/contracts/contracts/lit-node/Staking/Staking.t.sol +++ b/blockchain/contracts/contracts/lit-node/Staking/Staking.t.sol @@ -6655,7 +6655,7 @@ contract StakingTest is Test, SetupAndUtils { { // Delegated staker claims their rewards - uint256 balanceBefore = stakingFacet.stakeBalanceOf( + uint256 balanceBefore = token.balanceOf( delegatingStaker ); diff --git a/blockchain/contracts/contracts/lit-node/Staking/StakingFacet.sol b/blockchain/contracts/contracts/lit-node/Staking/StakingFacet.sol index 13c9ff1..002c932 100644 --- a/blockchain/contracts/contracts/lit-node/Staking/StakingFacet.sol +++ b/blockchain/contracts/contracts/lit-node/Staking/StakingFacet.sol @@ -1136,7 +1136,9 @@ contract StakingFacet is StakingCommon, ERC2771 { ); // The second split stake record will have a new tokenId. - uint256 newTokenId = LibStakingNFT.addNewTokenTo(stakerAddress); + uint256 newTokenId = LibStakingNFT.addNewTokenTo( + LibERC2771._msgSender() + ); _createStakeRecord( secondAmountSplit, newTimeLock, @@ -1273,7 +1275,7 @@ contract StakingFacet is StakingCommon, ERC2771 { return true; } - function stakeBalanceOf( + function selfStakeBalanceOf( address stakerAddress ) external view returns (uint256) { LibStakingStorage.StakeRecord[] memory stakeRecords = views() diff --git a/blockchain/contracts/contracts/lit-node/Staking/StakingNFTFacet.sol b/blockchain/contracts/contracts/lit-node/Staking/StakingNFTFacet.sol index 61f0505..148b0c0 100644 --- a/blockchain/contracts/contracts/lit-node/Staking/StakingNFTFacet.sol +++ b/blockchain/contracts/contracts/lit-node/Staking/StakingNFTFacet.sol @@ -21,6 +21,7 @@ contract StakingNFTFacet is IERC721 { error NotOwner(); error ZeroAddress(); error SameAddress(); + error NoEmptyStakeRecordSlots(); function s() internal pure returns (LibStakingStorage.NFTStorage storage) { return LibStakingStorage.getNFTStorage(); @@ -167,12 +168,14 @@ contract StakingNFTFacet is IERC721 { LibStakingStorage.MappedStakeRecord memory mappedStakeRecord = s() .tokenToStakeRecord[tokenId]; // Then, use this information to check for available stake record slots for the to address. - assert( + if ( views().getEmptyStakeRecordSlots( to, mappedStakeRecord.operatorStakerAddress - ) > 0 - ); + ) == 0 + ) { + revert NoEmptyStakeRecordSlots(); + } // Clear approvals delete s().tokenToApprovals[tokenId]; diff --git a/blockchain/contracts/contracts/lit-node/Staking/StakingNFTFacet.t.sol b/blockchain/contracts/contracts/lit-node/Staking/StakingNFTFacet.t.sol index a031110..2b5d51f 100644 --- a/blockchain/contracts/contracts/lit-node/Staking/StakingNFTFacet.t.sol +++ b/blockchain/contracts/contracts/lit-node/Staking/StakingNFTFacet.t.sol @@ -6,6 +6,7 @@ import { SetupAndUtils } from "./SetupAndUtils.t.sol"; import { LibStakingStorage } from "./LibStakingStorage.sol"; import { StakingUtilsLib } from "./StakingUtilsLib.sol"; import { StakingNFTFacet } from "./StakingNFTFacet.sol"; +import { console } from "lib/forge-std/src/console.sol"; contract StakingNFTFacetTest is Test, SetupAndUtils { function setUp() public { @@ -82,15 +83,629 @@ contract StakingNFTFacetTest is Test, SetupAndUtils { _transferAndAssertNFTAssertions( isSafeTransfer, TransferNFTAssertions({ + tokenOwner: delegatingStaker, + tokenSender: delegatingStaker, + tokenReceiver: tokenReceiver, + tokenId: 5, + operatorStakerAddress: operatorStakers[0], + expectedStakerToValidatorsTheyStakedToContainsOperator: false + }) + ); + } + + function test_StakeAndTransfer_RevertNotOwner(bool isSafeTransfer) public { + uint256 amount = 100 ether; + uint256 timeLock = 100 days; + + // Setup validators + address[] memory operatorStakers = _generateAddresses(4); + _setupValidators( + 1, + operatorStakers, + amount * 10, + amount, + timeLock, + _generateUint256s(4) + ); + + // Setup delegating staker + address delegatingStaker = address(0x999); + _fundAddressWithTokensAndApprove(delegatingStaker, amount); + + // Delegating staker stakes with a random validator + vm.prank(delegatingStaker); + stakingFacet.stake(amount, timeLock, operatorStakers[0]); + + // Transfer an NFT that is not owned by the delegating staker + vm.expectRevert(StakingNFTFacet.NotApprovedOrOwner.selector); + vm.prank(delegatingStaker); + if (isSafeTransfer) { + stakingNFTFacet.safeTransferFrom( + delegatingStaker, + address(0x888), + 1 + ); + } else { + stakingNFTFacet.transferFrom(delegatingStaker, address(0x888), 1); + } + } + + /// @notice This tests that when A transfers their NFT to B, B can mutate the stake record associated with the NFT. + function test_StakeAndTransfer_ReceiverMutatesStakeRecord( + bool isSafeTransfer, + uint256 operation + ) public { + uint256 amount = 100 ether; + uint256 timeLock = 100 days; + operation = bound(operation, 0, 3); // 4 operations - increase stake amount, increase stake timelock, split and migrate stake + + // Setup validators + address[] memory operatorStakers = _generateAddresses(4); + _setupValidators( + 1, + operatorStakers, + amount * 10, + amount, + timeLock, + _generateUint256s(4) + ); + + // Setup delegating staker + address delegatingStaker = address(0x999); + _fundAddressWithTokensAndApprove(delegatingStaker, amount); + + // Delegating staker stakes with a random validator + vm.prank(delegatingStaker); + stakingFacet.stake(amount, timeLock, operatorStakers[0]); + + _assertNFTAssertions( + NFTAssertions({ + tokenOwner: delegatingStaker, + tokenId: 5, + tokenBalance: 1, + operatorStakerAddress: operatorStakers[0], + tokenIndex: 0, + totalSupply: 5, + ownershipChanged: false, + stakeRecordId: 1 + }) + ); + + // Transfer the NFT to another address + address tokenReceiver = address(0x888); + _fundAddressWithTokensAndApprove(tokenReceiver, amount); + + _transferAndAssertNFTAssertions( + isSafeTransfer, + TransferNFTAssertions({ + tokenOwner: delegatingStaker, + tokenSender: delegatingStaker, + tokenReceiver: tokenReceiver, + tokenId: 5, + operatorStakerAddress: operatorStakers[0], + expectedStakerToValidatorsTheyStakedToContainsOperator: false + }) + ); + + if (operation == 0) { + _increaseStakeRecordAmountAndAssert( + IncreaseStakeRecordAmountAndAssertParams({ + userStakerAddress: tokenReceiver, + operatorStakerAddress: operatorStakers[0], + stakeRecordId: 1, + tokenId: 5, + isTransferredToken: true + }) + ); + } else if (operation == 1) { + _increaseStakeRecordTimelockAndAssert( + IncreaseStakeRecordTimelockAndAssertParams({ + userStakerAddress: tokenReceiver, + operatorStakerAddress: operatorStakers[0], + stakeRecordId: 1, + tokenId: 5, + isTransferredToken: true + }) + ); + } else if (operation == 2) { + _splitStakeRecordAndAssert( + SplitStakeRecordAndAssertParams({ + userStakerAddress: tokenReceiver, + operatorStakerAddress: operatorStakers[0], + stakeRecordId: 1, + tokenId: 5, + isTransferredToken: true + }) + ); + } else if (operation == 3) { + _migrateStakeRecordAndAssert( + MigrateStakeRecordAndAssertParams({ + userStakerAddress: tokenReceiver, + operatorStakerAddress: operatorStakers[0], + operatorStakerAddressToMigrateTo: operatorStakers[1], + stakeRecordId: 1, + tokenId: 5, + isTransferredToken: true + }) + ); + } + } + + /// @notice This tests that when a staker mutates their stake record, the NFT-related details are updated correctly. + function test_Stake_MutateStakeRecord(uint256 operation) public { + uint256 amount = 100 ether; + uint256 timeLock = 100 days; + operation = bound(operation, 0, 3); // 4 operations - increase stake amount, increase stake timelock, split and migrate stake + + // Setup validators + address[] memory operatorStakers = _generateAddresses(4); + _setupValidators( + 1, + operatorStakers, + amount * 10, + amount, + timeLock, + _generateUint256s(4) + ); + + // Setup delegating staker + address delegatingStaker = address(0x999); + _fundAddressWithTokensAndApprove(delegatingStaker, amount * 2); + + // Delegating staker stakes with a random validator + vm.prank(delegatingStaker); + stakingFacet.stake(amount, timeLock, operatorStakers[0]); + + _assertNFTAssertions( + NFTAssertions({ + tokenOwner: delegatingStaker, + tokenId: 5, + tokenBalance: 1, + operatorStakerAddress: operatorStakers[0], + tokenIndex: 0, + totalSupply: 5, + ownershipChanged: false, + stakeRecordId: 1 + }) + ); + + if (operation == 0) { + _increaseStakeRecordAmountAndAssert( + IncreaseStakeRecordAmountAndAssertParams({ + userStakerAddress: delegatingStaker, + operatorStakerAddress: operatorStakers[0], + stakeRecordId: 1, + tokenId: 5, + isTransferredToken: false + }) + ); + } else if (operation == 1) { + _increaseStakeRecordTimelockAndAssert( + IncreaseStakeRecordTimelockAndAssertParams({ + userStakerAddress: delegatingStaker, + operatorStakerAddress: operatorStakers[0], + stakeRecordId: 1, + tokenId: 5, + isTransferredToken: false + }) + ); + } else if (operation == 2) { + _splitStakeRecordAndAssert( + SplitStakeRecordAndAssertParams({ + userStakerAddress: delegatingStaker, + operatorStakerAddress: operatorStakers[0], + stakeRecordId: 1, + tokenId: 5, + isTransferredToken: false + }) + ); + } else if (operation == 3) { + _migrateStakeRecordAndAssert( + MigrateStakeRecordAndAssertParams({ + userStakerAddress: delegatingStaker, + operatorStakerAddress: operatorStakers[0], + operatorStakerAddressToMigrateTo: operatorStakers[1], + stakeRecordId: 1, + tokenId: 5, + isTransferredToken: false + }) + ); + } + } + + /// @notice This tests that when A transfers their NFT to B, B can claim past & future staking rewards. + function test_StakeAndTransfer_ClaimRewards(bool isSafeTransfer) public { + uint256 amount = 100 ether; + uint256 timeLock = 100 days; + + // Setup validators + address[] memory operatorStakers = _generateAddresses(4); + _setupValidators( + 1, + operatorStakers, + amount * 10, + amount, + timeLock, + _generateUint256s(4) + ); + + // Setup delegating staker + address delegatingStaker = address(0x999); + _fundAddressWithTokensAndApprove(delegatingStaker, amount); + + // Delegating staker stakes with a random validator + vm.prank(delegatingStaker); + stakingFacet.stake(amount, timeLock, operatorStakers[0]); + + _assertNFTAssertions( + NFTAssertions({ + tokenOwner: delegatingStaker, + tokenId: 5, + tokenBalance: 1, + operatorStakerAddress: operatorStakers[0], + tokenIndex: 0, + totalSupply: 5, + ownershipChanged: false, + stakeRecordId: 1 + }) + ); + + // Advance 5 epochs to produce staking rewards + uint256 epochNumber = _advanceEpochs(1, 5, operatorStakers, 1); + + // Transfer the NFT to another address + address tokenReceiver = address(0x888); + _transferAndAssertNFTAssertions( + isSafeTransfer, + TransferNFTAssertions({ + tokenOwner: delegatingStaker, tokenSender: delegatingStaker, tokenReceiver: tokenReceiver, tokenId: 5, - operatorStakerAddress: operatorStakers[0] + operatorStakerAddress: operatorStakers[0], + expectedStakerToValidatorsTheyStakedToContainsOperator: false + }) + ); + + // Receiver can instantly claim rewards + uint256 balanceBefore = token.balanceOf(tokenReceiver); + vm.prank(tokenReceiver); + stakingFacet.claimStakeRewards(1, operatorStakers[0], 1, 0); + assertGt(token.balanceOf(tokenReceiver), balanceBefore); + + // Advance another 5 epochs to produce more staking rewards + epochNumber = _advanceEpochs(1, 5, operatorStakers, epochNumber); + + // Receiver can claim rewards again + balanceBefore = token.balanceOf(tokenReceiver); + vm.prank(tokenReceiver); + stakingFacet.claimStakeRewards(1, operatorStakers[0], 1, 0); + assertGt(token.balanceOf(tokenReceiver), balanceBefore); + } + + /// @notice This tests that when A transfers their NFT to B, whether A unfrezzes or B does, + /// B can eventually withdraw their stake. + function test_StakeAndTransfer_Withdraw( + bool isSafeTransfer, + bool isUnfreezeBeforeTransfer + ) public { + uint256 amount = 100 ether; + uint256 timeLock = 15 days; + uint256 roundedTimeLock = (timeLock / 86400) * 86400; + + { + // Set the config + LibStakingStorage.GlobalConfig + memory globalConfig = stakingViewsFacet.globalConfig(); + globalConfig.minTimeLock = timeLock - 1 days; + stakingAdminFacet.setConfig(globalConfig); + } + + // Setup validators + address[] memory operatorStakers = _generateAddresses(4); + _setupValidators( + 1, + operatorStakers, + amount * 10, + amount, + timeLock, + _generateUint256s(4) + ); + + // Setup delegating staker + address delegatingStaker = address(0x999); + _fundAddressWithTokensAndApprove(delegatingStaker, amount); + + // Delegating staker stakes with a random validator + vm.prank(delegatingStaker); + stakingFacet.stake(amount, timeLock, operatorStakers[0]); + + _assertNFTAssertions( + NFTAssertions({ + tokenOwner: delegatingStaker, + tokenId: 5, + tokenBalance: 1, + operatorStakerAddress: operatorStakers[0], + tokenIndex: 0, + totalSupply: 5, + ownershipChanged: false, + stakeRecordId: 1 + }) + ); + + // Advance 5 epochs to initialize the reward epochs + uint256 currentEpochNumber = _advanceEpochs(1, 5, operatorStakers, 1); + address tokenReceiver = address(0x888); + if (isUnfreezeBeforeTransfer) { + // Unfreeze the stake before transferring the NFT + vm.prank(delegatingStaker); + stakingFacet.unfreezeStake(operatorStakers[0], 1); + + // Transfer the NFT to another address + _transferAndAssertNFTAssertions( + isSafeTransfer, + TransferNFTAssertions({ + tokenOwner: delegatingStaker, + tokenSender: delegatingStaker, + tokenReceiver: tokenReceiver, + tokenId: 5, + operatorStakerAddress: operatorStakers[0], + expectedStakerToValidatorsTheyStakedToContainsOperator: false + }) + ); + } else { + // Transfer the NFT to another address + _transferAndAssertNFTAssertions( + isSafeTransfer, + TransferNFTAssertions({ + tokenOwner: delegatingStaker, + tokenSender: delegatingStaker, + tokenReceiver: tokenReceiver, + tokenId: 5, + operatorStakerAddress: operatorStakers[0], + expectedStakerToValidatorsTheyStakedToContainsOperator: false + }) + ); + + // Unfreeze the stake + vm.prank(tokenReceiver); + stakingFacet.unfreezeStake(operatorStakers[0], 1); + } + + // Assert validatorToDelegatedStakersWithUnfreezingStakes + { + assertEq( + stakingViewsFacet.getDelegatedStakersWithUnfreezingStakesCount( + operatorStakers[0] + ), + 1 + ); + + address[] + memory validatorToDelegatedStakersWithUnfreezingStakes = stakingViewsFacet + .getDelegatedStakersWithUnfreezingStakes( + operatorStakers[0], + 1, + 0 + ); + assertEq(validatorToDelegatedStakersWithUnfreezingStakes.length, 1); + assertEq( + validatorToDelegatedStakersWithUnfreezingStakes[0], + tokenReceiver + ); + } + + // Advance enough epochs to fully unfreeze the stake and withdraw + { + uint256 epochLength = stakingViewsFacet.epoch(1).epochLength; + uint256 epochsToAdvance = ((roundedTimeLock + 1 days) / + epochLength) + 1; // Add additional day because unfreezing starts at the beginning of the next day + vm.pauseGasMetering(); + currentEpochNumber = _advanceEpochs( + 1, + epochsToAdvance, + operatorStakers, + currentEpochNumber + ); + vm.resumeGasMetering(); + } + + // Rewards must be claimed before withdrawing + uint256 balanceBefore = token.balanceOf(tokenReceiver); + vm.prank(tokenReceiver); + stakingFacet.claimStakeRewards( + 1, + operatorStakers[0], + 1, + type(uint256).max + ); + assertGt(token.balanceOf(tokenReceiver), balanceBefore); + + // Withdraw the stake + _withdrawAndAssertNFTAssertions( + WithdrawAndAssertParams({ + userStakerAddress: tokenReceiver, + operatorStakerAddress: operatorStakers[0], + stakeRecordId: 1 + }) + ); + } + + /// @notice This tests that when A approves B and then B transfers to C, that approval is revoked from B. + function test_StakeApproveAndTransfer(bool isSafeTransfer) public { + uint256 amount = 100 ether; + uint256 timeLock = 100 days; + + // Setup validators + address[] memory operatorStakers = _generateAddresses(4); + _setupValidators( + 1, + operatorStakers, + amount * 10, + amount, + timeLock, + _generateUint256s(4) + ); + + // Setup delegating staker + address delegatingStaker = address(0x999); + _fundAddressWithTokensAndApprove(delegatingStaker, amount); + + // Delegating staker stakes with a random validator + vm.prank(delegatingStaker); + stakingFacet.stake(amount, timeLock, operatorStakers[0]); + + _assertNFTAssertions( + NFTAssertions({ + tokenOwner: delegatingStaker, + tokenId: 5, + tokenBalance: 1, + operatorStakerAddress: operatorStakers[0], + tokenIndex: 0, + totalSupply: 5, + ownershipChanged: false, + stakeRecordId: 1 + }) + ); + + // Approve B + address tokenReceiverB = address(0x888); + address tokenReceiverC = address(0x777); + vm.prank(delegatingStaker); + stakingNFTFacet.approve(tokenReceiverB, 5); + + // Assert approvals + assertEq(stakingNFTFacet.getApproved(5), tokenReceiverB); + + // B transfers the NFT to C + _transferAndAssertNFTAssertions( + isSafeTransfer, + TransferNFTAssertions({ + tokenOwner: delegatingStaker, + tokenSender: tokenReceiverB, + tokenReceiver: tokenReceiverC, + tokenId: 5, + operatorStakerAddress: operatorStakers[0], + expectedStakerToValidatorsTheyStakedToContainsOperator: false + }) + ); + + // Assert approvals are cleared + assertEq(stakingNFTFacet.getApproved(5), address(0)); + } + + /// @notice This tests that when A approves for all, and then B transfers both tokens to C and D, + /// that all approvals have NOT changed. + function test_StakeApproveForAllAndTransfer(bool isSafeTransfer) public { + uint256 amount = 100 ether; + uint256 timeLock = 100 days; + + // Setup validators + address[] memory operatorStakers = _generateAddresses(4); + _setupValidators( + 1, + operatorStakers, + amount * 10, + amount, + timeLock, + _generateUint256s(4) + ); + + // Setup delegating staker + address delegatingStaker = address(0x999); + _fundAddressWithTokensAndApprove(delegatingStaker, amount * 2); + + // Delegating staker stakes with a random validator + vm.prank(delegatingStaker); + stakingFacet.stake(amount, timeLock, operatorStakers[0]); + _assertNFTAssertions( + NFTAssertions({ + tokenOwner: delegatingStaker, + tokenId: 5, + tokenBalance: 1, + operatorStakerAddress: operatorStakers[0], + tokenIndex: 0, + totalSupply: 5, + ownershipChanged: false, + stakeRecordId: 1 + }) + ); + + // Delegating staker stakes again with the same validator + vm.prank(delegatingStaker); + stakingFacet.stake(amount, timeLock, operatorStakers[0]); + _assertNFTAssertions( + NFTAssertions({ + tokenOwner: delegatingStaker, + tokenId: 6, + tokenBalance: 2, + operatorStakerAddress: operatorStakers[0], + tokenIndex: 1, + totalSupply: 6, + ownershipChanged: false, + stakeRecordId: 2 + }) + ); + + // Approve B for all tokens + address tokenReceiverB = address(0x888); + address tokenReceiverC = address(0x777); + address tokenReceiverD = address(0x666); + vm.prank(delegatingStaker); + stakingNFTFacet.setApprovalForAll(tokenReceiverB, true); + + // Assert approvals + assertTrue( + stakingNFTFacet.isApprovedForAll(delegatingStaker, tokenReceiverB) + ); + assertFalse( + stakingNFTFacet.isApprovedForAll(delegatingStaker, tokenReceiverC) + ); + assertFalse( + stakingNFTFacet.isApprovedForAll(delegatingStaker, tokenReceiverD) + ); + + // B transfers both tokens to C and D + _transferAndAssertNFTAssertions( + isSafeTransfer, + TransferNFTAssertions({ + tokenOwner: delegatingStaker, + tokenSender: tokenReceiverB, + tokenReceiver: tokenReceiverC, + tokenId: 5, + operatorStakerAddress: operatorStakers[0], + expectedStakerToValidatorsTheyStakedToContainsOperator: true + }) + ); + _transferAndAssertNFTAssertions( + isSafeTransfer, + TransferNFTAssertions({ + tokenOwner: delegatingStaker, + tokenSender: tokenReceiverB, + tokenReceiver: tokenReceiverD, + tokenId: 6, + operatorStakerAddress: operatorStakers[0], + expectedStakerToValidatorsTheyStakedToContainsOperator: false }) ); + + // Assert approvals have NOT changed (it is impossible to clear entirely) + assertTrue( + stakingNFTFacet.isApprovedForAll(delegatingStaker, tokenReceiverB) + ); + assertFalse( + stakingNFTFacet.isApprovedForAll(delegatingStaker, tokenReceiverC) + ); + assertFalse( + stakingNFTFacet.isApprovedForAll(delegatingStaker, tokenReceiverD) + ); } - function test_StakeAndTransfer_RevertNotOwner() public { + /// @notice This tests that when a staker stakes multiple times and then transfers the first one, + /// that the token owner by index is updated correctly. + function test_StakeAndTransfer_TokenOwnerByIndex( + bool isSafeTransfer + ) public { uint256 amount = 100 ether; uint256 timeLock = 100 days; @@ -107,34 +722,218 @@ contract StakingNFTFacetTest is Test, SetupAndUtils { // Setup delegating staker address delegatingStaker = address(0x999); - _fundAddressWithTokensAndApprove(delegatingStaker, amount); + _fundAddressWithTokensAndApprove(delegatingStaker, amount * 2); // Delegating staker stakes with a random validator vm.prank(delegatingStaker); stakingFacet.stake(amount, timeLock, operatorStakers[0]); + _assertNFTAssertions( + NFTAssertions({ + tokenOwner: delegatingStaker, + tokenId: 5, + tokenBalance: 1, + operatorStakerAddress: operatorStakers[0], + tokenIndex: 0, + totalSupply: 5, + ownershipChanged: false, + stakeRecordId: 1 + }) + ); - // Transfer an NFT that is not owned by the delegating staker - vm.expectRevert(StakingNFTFacet.NotApprovedOrOwner.selector); + // Delegating staker stakes again with the same validator vm.prank(delegatingStaker); - stakingNFTFacet.transferFrom(delegatingStaker, address(0x888), 1); + stakingFacet.stake(amount, timeLock, operatorStakers[0]); + _assertNFTAssertions( + NFTAssertions({ + tokenOwner: delegatingStaker, + tokenId: 6, + tokenBalance: 2, + operatorStakerAddress: operatorStakers[0], + tokenIndex: 1, + totalSupply: 6, + ownershipChanged: false, + stakeRecordId: 2 + }) + ); + + // Assert token owner by index is correct before transferring + assertEq(stakingNFTFacet.tokenOfOwnerByIndex(delegatingStaker, 0), 5); + assertEq(stakingNFTFacet.tokenOfOwnerByIndex(delegatingStaker, 1), 6); + + // Transfer the first token + address tokenReceiver = address(0x888); + _transferAndAssertNFTAssertions( + isSafeTransfer, + TransferNFTAssertions({ + tokenOwner: delegatingStaker, + tokenSender: delegatingStaker, + tokenReceiver: tokenReceiver, + tokenId: 5, + operatorStakerAddress: operatorStakers[0], + expectedStakerToValidatorsTheyStakedToContainsOperator: true + }) + ); + + // Assert token owner by index is updated correctly + assertEq(stakingNFTFacet.balanceOf(delegatingStaker), 1); + assertEq(stakingNFTFacet.tokenOfOwnerByIndex(delegatingStaker, 0), 6); } - struct TransferNFTAssertions { - address tokenSender; - address tokenReceiver; - uint256 tokenId; + /// @notice This tests that when a staker stakes the maximum number of times (30) + /// and attempts to obtain another NFT to themselves, that the transfer should fail. + function test_StakeMax_TransferShouldFail(bool isSafeTransfer) public { + uint256 amount = 100 ether; + uint256 timeLock = 100 days; + + // Setup validators + address[] memory operatorStakers = _generateAddresses(4); + _setupValidators( + 1, + operatorStakers, + amount * 10, + amount, + timeLock, + _generateUint256s(4) + ); + + // Setup delegating staker #1 + address delegatingStaker1 = address(0x999); + _fundAddressWithTokensAndApprove(delegatingStaker1, amount * 30); + + // Delegating staker #1 stakes 30 times with the same validator + for (uint256 i = 0; i < 30; i++) { + vm.prank(delegatingStaker1); + stakingFacet.stake(amount, timeLock, operatorStakers[0]); + _assertNFTAssertions( + NFTAssertions({ + tokenOwner: delegatingStaker1, + tokenId: 5 + i, + tokenBalance: 1 + i, + operatorStakerAddress: operatorStakers[0], + tokenIndex: i, + totalSupply: 5 + i, + ownershipChanged: false, + stakeRecordId: 1 + i + }) + ); + } + + // Setup delegating staker #2 + address delegatingStaker2 = address(0x888); + _fundAddressWithTokensAndApprove(delegatingStaker2, amount); + + // Delegating staker #2 stakes with the same validator + vm.prank(delegatingStaker2); + stakingFacet.stake(amount, timeLock, operatorStakers[0]); + _assertNFTAssertions( + NFTAssertions({ + tokenOwner: delegatingStaker2, + tokenId: 35, + tokenBalance: 1, + operatorStakerAddress: operatorStakers[0], + tokenIndex: 0, + totalSupply: 35, + ownershipChanged: false, + stakeRecordId: 1 + }) + ); + + // Delegating staker #2 attempts to transfer the NFT to delegating staker #1 + vm.prank(delegatingStaker2); + vm.expectRevert( + abi.encodeWithSelector( + StakingNFTFacet.NoEmptyStakeRecordSlots.selector + ) + ); + stakingNFTFacet.transferFrom(delegatingStaker2, delegatingStaker1, 35); + } + + /* ========== PRIVATE FUNCTIONS ========== */ + + struct WithdrawAndAssertParams { + address userStakerAddress; address operatorStakerAddress; + uint256 stakeRecordId; } - struct NFTAssertions { - address tokenOwner; + function _withdrawAndAssertNFTAssertions( + WithdrawAndAssertParams memory params + ) private { + // Get the stake record before the withdraw + LibStakingStorage.StakeRecord + memory stakeRecordBefore = stakingViewsFacet.getStakeRecord( + params.operatorStakerAddress, + params.stakeRecordId, + params.userStakerAddress + ); + ( + uint256 stakeRecordTotalStakeByUserBefore, + uint256 _stakeRecordTotalStakeWeightByUserBefore + ) = stakingViewsFacet.getTotalStakeByUser( + params.operatorStakerAddress, + params.userStakerAddress + ); + uint256 nftTokenBalanceBefore = stakingNFTFacet.balanceOf( + params.userStakerAddress + ); + uint256 tokenBalanceBefore = token.balanceOf(params.userStakerAddress); + uint256 totalSupplyBefore = stakingNFTFacet.totalSupply(); + + // Withdraw the stake + vm.prank(params.userStakerAddress); + stakingFacet.withdraw( + params.operatorStakerAddress, + params.stakeRecordId + ); + + // Assert that the stake was withdrawn + ( + uint256 stakeRecordTotalStakeByUserAfter, + uint256 _stakeRecordTotalStakeWeightByUserAfter + ) = stakingViewsFacet.getTotalStakeByUser( + params.operatorStakerAddress, + params.userStakerAddress + ); + assertEq( + stakeRecordTotalStakeByUserAfter, + stakeRecordTotalStakeByUserBefore - stakeRecordBefore.amount + ); + assertEq( + token.balanceOf(params.userStakerAddress), + tokenBalanceBefore + stakeRecordBefore.amount + ); + assertEq( + stakingNFTFacet.balanceOf(params.userStakerAddress), + nftTokenBalanceBefore - 1 + ); + assertEq( + stakingNFTFacet.ownerOf(stakeRecordBefore.tokenId), + address(0) + ); + assertEq(stakingNFTFacet.totalSupply(), totalSupplyBefore); // total supply never decreases + + // We do not currently clear this data but we could. + assertEq( + stakingNFTFacet + .tokenToStakeRecord(stakeRecordBefore.tokenId) + .operatorStakerAddress, + params.operatorStakerAddress + ); + assertEq( + stakingNFTFacet + .tokenToStakeRecord(stakeRecordBefore.tokenId) + .stakeRecordId, + params.stakeRecordId + ); + } + + struct TransferNFTAssertions { + address tokenOwner; // Owner of NFT before transfer + address tokenSender; + address tokenReceiver; uint256 tokenId; - uint256 tokenBalance; address operatorStakerAddress; - uint256 tokenIndex; - uint256 totalSupply; - bool ownershipChanged; - uint256 stakeRecordId; + bool expectedStakerToValidatorsTheyStakedToContainsOperator; } function _transferAndAssertNFTAssertions( @@ -142,8 +941,8 @@ contract StakingNFTFacetTest is Test, SetupAndUtils { TransferNFTAssertions memory transferNFTAssertions ) private { // Get sender and receiver details before the transfer - uint256 balanceOfSenderBefore = stakingNFTFacet.balanceOf( - transferNFTAssertions.tokenSender + uint256 balanceOfOwnerBefore = stakingNFTFacet.balanceOf( + transferNFTAssertions.tokenOwner ); uint256 balanceOfReceiverBefore = stakingNFTFacet.balanceOf( transferNFTAssertions.tokenReceiver @@ -156,30 +955,29 @@ contract StakingNFTFacetTest is Test, SetupAndUtils { .tokenToStakeRecord(transferNFTAssertions.tokenId) .stakeRecordId; LibStakingStorage.StakeRecord - memory stakeRecordSenderBefore = stakingViewsFacet.getStakeRecord( + memory stakeRecordOwnerBefore = stakingViewsFacet.getStakeRecord( transferNFTAssertions.operatorStakerAddress, stakeRecordIdBefore, - transferNFTAssertions.tokenSender + transferNFTAssertions.tokenOwner ); LibStakingStorage.StakeRecord memory mostRecentStakeRecordReceiverBefore = stakingViewsFacet .getMostRecentStakeRecord( - transferNFTAssertions.tokenSender, - transferNFTAssertions.tokenReceiver + transferNFTAssertions.tokenReceiver, + transferNFTAssertions.operatorStakerAddress ); // Transfer the NFT + vm.prank(transferNFTAssertions.tokenSender); if (isSafeTransfer) { - vm.prank(transferNFTAssertions.tokenSender); stakingNFTFacet.transferFrom( - transferNFTAssertions.tokenSender, + transferNFTAssertions.tokenOwner, transferNFTAssertions.tokenReceiver, transferNFTAssertions.tokenId ); } else { - vm.prank(transferNFTAssertions.tokenSender); stakingNFTFacet.safeTransferFrom( - transferNFTAssertions.tokenSender, + transferNFTAssertions.tokenOwner, transferNFTAssertions.tokenReceiver, transferNFTAssertions.tokenId ); @@ -187,8 +985,8 @@ contract StakingNFTFacetTest is Test, SetupAndUtils { // Assertions assertEq( - stakingNFTFacet.balanceOf(transferNFTAssertions.tokenSender), - balanceOfSenderBefore - 1 + stakingNFTFacet.balanceOf(transferNFTAssertions.tokenOwner), + balanceOfOwnerBefore - 1 ); assertEq( stakingNFTFacet.balanceOf(transferNFTAssertions.tokenReceiver), @@ -227,13 +1025,13 @@ contract StakingNFTFacetTest is Test, SetupAndUtils { vm.expectRevert( abi.encodeWithSelector( StakingUtilsLib.StakeRecordNotFound.selector, - mostRecentStakeRecordReceiverBefore.id + 1 + stakeRecordIdBefore ) ); stakingViewsFacet.getStakeRecord( transferNFTAssertions.operatorStakerAddress, stakeRecordIdBefore, - transferNFTAssertions.tokenSender + transferNFTAssertions.tokenOwner ); // Expect success when getting stake record for receiver @@ -247,35 +1045,39 @@ contract StakingNFTFacetTest is Test, SetupAndUtils { assertGe( stakeRecordReceiver.lastUpdateTimestamp, - stakeRecordSenderBefore.lastUpdateTimestamp + stakeRecordOwnerBefore.lastUpdateTimestamp ); // Assert stakerToValidatorsTheyStakedTo { address[] - memory stakerToValidatorsTheyStakedToSender = stakingViewsFacet + memory stakerToValidatorsTheyStakedToOwner = stakingViewsFacet .stakerToValidatorsTheyStakedTo( - transferNFTAssertions.tokenSender + transferNFTAssertions.tokenOwner ); address[] memory stakerToValidatorsTheyStakedToReceiver = stakingViewsFacet .stakerToValidatorsTheyStakedTo( transferNFTAssertions.tokenReceiver ); + bool ownerContainsOperatorStakerAddress = false; for ( uint256 i = 0; - i < stakerToValidatorsTheyStakedToSender.length; + i < stakerToValidatorsTheyStakedToOwner.length; i++ ) { if ( - stakerToValidatorsTheyStakedToSender[i] == + stakerToValidatorsTheyStakedToOwner[i] == transferNFTAssertions.operatorStakerAddress ) { - fail( - "Staker to validators they staked to sender contains operator staker address" - ); + ownerContainsOperatorStakerAddress = true; } } + assertEq( + ownerContainsOperatorStakerAddress, + transferNFTAssertions + .expectedStakerToValidatorsTheyStakedToContainsOperator + ); bool receiverContainsOperatorStakerAddress = false; for ( uint256 i = 0; @@ -293,39 +1095,251 @@ contract StakingNFTFacetTest is Test, SetupAndUtils { } } + struct IncreaseStakeRecordAmountAndAssertParams { + address userStakerAddress; + address operatorStakerAddress; + uint256 stakeRecordId; + uint256 tokenId; + bool isTransferredToken; + } + + function _increaseStakeRecordAmountAndAssert( + IncreaseStakeRecordAmountAndAssertParams memory params + ) private { + // Get the stake record before the increase + LibStakingStorage.StakeRecord + memory stakeRecordBefore = stakingViewsFacet.getStakeRecord( + params.operatorStakerAddress, + params.stakeRecordId, + params.userStakerAddress + ); + uint256 existingStakeRecordAmount = stakeRecordBefore.amount; + uint256 totalSupplyBefore = stakingNFTFacet.totalSupply(); + + vm.prank(params.userStakerAddress); + stakingFacet.increaseStakeRecordAmount( + params.operatorStakerAddress, + params.stakeRecordId, + 1 ether // always increase by 1 ether + ); + + _assertNFTAssertions( + NFTAssertions({ + tokenOwner: params.userStakerAddress, + tokenId: params.tokenId, + tokenBalance: 1, + operatorStakerAddress: params.operatorStakerAddress, + tokenIndex: 0, + totalSupply: totalSupplyBefore, + ownershipChanged: params.isTransferredToken, + stakeRecordId: params.stakeRecordId + 1 + }) + ); + } + + struct IncreaseStakeRecordTimelockAndAssertParams { + address userStakerAddress; + address operatorStakerAddress; + uint256 stakeRecordId; + uint256 tokenId; + bool isTransferredToken; + } + + function _increaseStakeRecordTimelockAndAssert( + IncreaseStakeRecordTimelockAndAssertParams memory params + ) private { + // Get the stake record before the increase + LibStakingStorage.StakeRecord + memory stakeRecordBefore = stakingViewsFacet.getStakeRecord( + params.operatorStakerAddress, + params.stakeRecordId, + params.userStakerAddress + ); + uint256 existingStakeRecordTimelock = stakeRecordBefore.timeLock; + uint256 totalSupplyBefore = stakingNFTFacet.totalSupply(); + + vm.prank(params.userStakerAddress); + stakingFacet.increaseStakeRecordTimelock( + params.operatorStakerAddress, + params.stakeRecordId, + 1 days + ); + + _assertNFTAssertions( + NFTAssertions({ + tokenOwner: params.userStakerAddress, + tokenId: params.tokenId, + tokenBalance: 1, + operatorStakerAddress: params.operatorStakerAddress, + tokenIndex: 0, + totalSupply: totalSupplyBefore, + ownershipChanged: params.isTransferredToken, + stakeRecordId: params.stakeRecordId + 1 + }) + ); + } + + struct SplitStakeRecordAndAssertParams { + address userStakerAddress; + address operatorStakerAddress; + uint256 stakeRecordId; + uint256 tokenId; + bool isTransferredToken; + } + + function _splitStakeRecordAndAssert( + SplitStakeRecordAndAssertParams memory params + ) private { + // Get the stake record before the split + LibStakingStorage.StakeRecord + memory stakeRecordBefore = stakingViewsFacet.getStakeRecord( + params.operatorStakerAddress, + params.stakeRecordId, + params.userStakerAddress + ); + uint256 existingStakeRecordAmount = stakeRecordBefore.amount; + uint256 existingStakeRecordTimelock = stakeRecordBefore.timeLock; + uint256 totalSupplyBefore = stakingNFTFacet.totalSupply(); + + vm.prank(params.userStakerAddress); + stakingFacet.splitStakeRecord( + params.operatorStakerAddress, + params.stakeRecordId, + .5 ether // always split into 2 equal parts + ); + + _assertNFTAssertions( + NFTAssertions({ + tokenOwner: params.userStakerAddress, + tokenId: params.tokenId, + tokenBalance: 2, + operatorStakerAddress: params.operatorStakerAddress, + tokenIndex: 0, + totalSupply: totalSupplyBefore + 1, + ownershipChanged: params.isTransferredToken, + stakeRecordId: params.stakeRecordId + 1 + }) + ); + + _assertNFTAssertions( + NFTAssertions({ + tokenOwner: params.userStakerAddress, + tokenId: params.tokenId + 1, + tokenBalance: 2, + operatorStakerAddress: params.operatorStakerAddress, + tokenIndex: 1, + totalSupply: totalSupplyBefore + 1, + ownershipChanged: false, + stakeRecordId: params.stakeRecordId + 2 + }) + ); + } + + struct MigrateStakeRecordAndAssertParams { + address userStakerAddress; + address operatorStakerAddress; + address operatorStakerAddressToMigrateTo; + uint256 stakeRecordId; + uint256 tokenId; + bool isTransferredToken; + } + + function _migrateStakeRecordAndAssert( + MigrateStakeRecordAndAssertParams memory params + ) private { + // Get the stake record before the migrate + LibStakingStorage.StakeRecord + memory stakeRecordBefore = stakingViewsFacet.getStakeRecord( + params.operatorStakerAddress, + params.stakeRecordId, + params.userStakerAddress + ); + uint256 existingStakeRecordAmount = stakeRecordBefore.amount; + uint256 existingStakeRecordTimelock = stakeRecordBefore.timeLock; + uint256 totalSupplyBefore = stakingNFTFacet.totalSupply(); + + vm.prank(params.userStakerAddress); + stakingFacet.migrateStakeRecord( + params.operatorStakerAddress, + params.stakeRecordId, + params.operatorStakerAddressToMigrateTo + ); + + _assertNFTAssertions( + NFTAssertions({ + tokenOwner: params.userStakerAddress, + tokenId: params.tokenId, + tokenBalance: 1, + operatorStakerAddress: params.operatorStakerAddressToMigrateTo, + tokenIndex: 0, + totalSupply: totalSupplyBefore, + ownershipChanged: params.isTransferredToken, + stakeRecordId: 1 + }) + ); + } + + struct NFTAssertions { + address tokenOwner; + uint256 tokenId; + uint256 tokenBalance; + address operatorStakerAddress; + uint256 tokenIndex; + uint256 totalSupply; + bool ownershipChanged; + uint256 stakeRecordId; + } + function _assertNFTAssertions(NFTAssertions memory nftAssertions) private { assertEq( stakingNFTFacet.balanceOf(nftAssertions.tokenOwner), - nftAssertions.tokenBalance + nftAssertions.tokenBalance, + "Token balance mismatch" ); assertEq( stakingNFTFacet.ownerOf(nftAssertions.tokenId), - nftAssertions.tokenOwner + nftAssertions.tokenOwner, + "Token owner mismatch" ); assertEq( stakingNFTFacet.tokenOfOwnerByIndex( nftAssertions.tokenOwner, nftAssertions.tokenIndex ), - nftAssertions.tokenId + nftAssertions.tokenId, + "Token of owner by index mismatch" + ); + assertEq( + stakingNFTFacet.totalSupply(), + nftAssertions.totalSupply, + "Total supply mismatch" ); - assertEq(stakingNFTFacet.totalSupply(), nftAssertions.totalSupply); if (nftAssertions.ownershipChanged) { - assertGt(stakingNFTFacet.ownershipChange(nftAssertions.tokenId), 0); + assertGt( + stakingNFTFacet.ownershipChange(nftAssertions.tokenId), + 0, + "Ownership change mismatch" + ); } else { - assertEq(stakingNFTFacet.ownershipChange(nftAssertions.tokenId), 0); + assertEq( + stakingNFTFacet.ownershipChange(nftAssertions.tokenId), + 0, + "Ownership change mismatch" + ); } assertEq( stakingNFTFacet .tokenToStakeRecord(nftAssertions.tokenId) .operatorStakerAddress, - nftAssertions.operatorStakerAddress + nftAssertions.operatorStakerAddress, + "Operator staker address mismatch" ); assertEq( stakingNFTFacet .tokenToStakeRecord(nftAssertions.tokenId) .stakeRecordId, - nftAssertions.stakeRecordId + nftAssertions.stakeRecordId, + "Stake record id mismatch" ); LibStakingStorage.StakeRecord memory stakeRecord = stakingViewsFacet @@ -334,6 +1348,10 @@ contract StakingNFTFacetTest is Test, SetupAndUtils { nftAssertions.stakeRecordId, nftAssertions.tokenOwner ); - assertEq(stakeRecord.tokenId, nftAssertions.tokenId); + assertEq( + stakeRecord.tokenId, + nftAssertions.tokenId, + "Token id mismatch" + ); } } diff --git a/blockchain/contracts/test/lit-node/Staking.js b/blockchain/contracts/test/lit-node/Staking.js index 47b14ce..ab2dd2d 100644 --- a/blockchain/contracts/test/lit-node/Staking.js +++ b/blockchain/contracts/test/lit-node/Staking.js @@ -242,7 +242,7 @@ describe('Staking', function () { const ipAddress = ip2int(stakingAccount1IpAddress); for (let i = 0; i < validatorsStructs.length; i++) { const validator = validatorsStructs[i]; - const balance = await stakingFacet.stakeBalanceOf( + const balance = await stakingFacet.selfStakeBalanceOf( validatorStakingAddresses[i] ); expect(validator.nodeAddress).equal( @@ -271,7 +271,7 @@ describe('Staking', function () { expect(validators.length).equal(10); for (let i = 0; i < validators.length; i++) { const validator = validators[i]; - const balance = await stakingFacet.stakeBalanceOf( + const balance = await stakingFacet.selfStakeBalanceOf( validatorStakingAddresses[i] ); expect(validator.nodeAddress).equal( @@ -309,7 +309,7 @@ describe('Staking', function () { describe('validator joining', function () { it('can join as a validator, and cannot leave as a staker if below min validator count', async () => { - let initialStakeBal = await stakingFacet.stakeBalanceOf( + let initialStakeBal = await stakingFacet.selfStakeBalanceOf( stakingAccount1.address ); let initialTokenBalance = await token.balanceOf(stakingAccount1.address); @@ -368,7 +368,7 @@ describe('Staking', function () { stakingValidatorFacet = stakingValidatorFacet.connect(stakingAccount1); await stakingValidatorFacet.requestToJoin(realmId); - let postStakeBal = await stakingFacet.stakeBalanceOf( + let postStakeBal = await stakingFacet.selfStakeBalanceOf( stakingAccount1.address ); let postTokenBalance = await token.balanceOf(stakingAccount1.address); @@ -380,7 +380,7 @@ describe('Staking', function () { const postNodeAddress = postValidatorEntry.nodeAddress; const postSenderPubKey = postValidatorEntry.senderPubKey; const postReceiverPubKey = postValidatorEntry.receiverPubKey; - let postBalance = await stakingFacet.stakeBalanceOf( + let postBalance = await stakingFacet.selfStakeBalanceOf( stakingAccount1.address ); let postReward = postValidatorEntry.reward; @@ -431,14 +431,14 @@ describe('Staking', function () { token = token.connect(stakingAccount1); stakingValidatorFacet = stakingValidatorFacet.connect(stakingAccount1); - initialStakeBal = await stakingFacet.stakeBalanceOf( + initialStakeBal = await stakingFacet.selfStakeBalanceOf( stakingAccount1.address ); initialTokenBalance = await token.balanceOf(stakingAccount1.address); initialValidatorEntry = await stakingViewsFacet.validators( stakingAccount1.address ); - const initialBalance = await stakingFacet.stakeBalanceOf( + const initialBalance = await stakingFacet.selfStakeBalanceOf( stakingAccount1.address ); initialReward = initialValidatorEntry.reward; @@ -457,13 +457,17 @@ describe('Staking', function () { 7n ); - postStakeBal = await stakingFacet.stakeBalanceOf(stakingAccount1.address); + postStakeBal = await stakingFacet.selfStakeBalanceOf( + stakingAccount1.address + ); postTokenBalance = await token.balanceOf(stakingAccount1.address); postValidatorEntry = await stakingViewsFacet.validators( stakingAccount1.address ); - postBalance = await stakingFacet.stakeBalanceOf(stakingAccount1.address); + postBalance = await stakingFacet.selfStakeBalanceOf( + stakingAccount1.address + ); postReward = postValidatorEntry.reward; postNodeAddressToStakerAddress = await stakingViewsFacet.nodeAddressToStakerAddress( From fd9004ebb6ece3a7902ebd8d871919f8eadecaee Mon Sep 17 00:00:00 2001 From: Howard Tam Date: Tue, 2 Dec 2025 20:26:35 -0800 Subject: [PATCH 14/18] Prettier --- blockchain/contracts/contracts/lit-node/Staking/Staking.t.sol | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/blockchain/contracts/contracts/lit-node/Staking/Staking.t.sol b/blockchain/contracts/contracts/lit-node/Staking/Staking.t.sol index 768f896..1e3e5db 100644 --- a/blockchain/contracts/contracts/lit-node/Staking/Staking.t.sol +++ b/blockchain/contracts/contracts/lit-node/Staking/Staking.t.sol @@ -6655,9 +6655,7 @@ contract StakingTest is Test, SetupAndUtils { { // Delegated staker claims their rewards - uint256 balanceBefore = token.balanceOf( - delegatingStaker - ); + uint256 balanceBefore = token.balanceOf(delegatingStaker); vm.prank(delegatingStaker); stakingFacet.claimStakeRewards( From db85fbd3dbcc44af966b15f038593b0cadd15a83 Mon Sep 17 00:00:00 2001 From: Howard Date: Tue, 2 Dec 2025 23:29:09 -0500 Subject: [PATCH 15/18] Update ABIs and rust bindings --- blockchain/contracts/abis/Staking.abi | 1282 +- .../lit-blockchain-lite/abis/Staking.json | 1282 +- .../src/contracts/staking.rs | 10114 +++++++++++----- .../lit-blockchain/abis/PKPHelper.json | 4 +- .../lit-core/lit-blockchain/abis/Staking.json | 1282 +- .../lit-blockchain/src/contracts/staking.rs | 9428 +++++++++----- 6 files changed, 17213 insertions(+), 6179 deletions(-) diff --git a/blockchain/contracts/abis/Staking.abi b/blockchain/contracts/abis/Staking.abi index be17186..d181f4d 100644 --- a/blockchain/contracts/abis/Staking.abi +++ b/blockchain/contracts/abis/Staking.abi @@ -2454,6 +2454,25 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "stakerAddress", + "type": "address" + } + ], + "name": "selfStakeBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -2526,25 +2545,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "stakerAddress", - "type": "address" - } - ], - "name": "stakeBalanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -2869,6 +2869,11 @@ "name": "ERC721TransferToNonERC721ReceiverImplementer", "type": "error" }, + { + "inputs": [], + "name": "NoEmptyStakeRecordSlots", + "type": "error" + }, { "inputs": [], "name": "NotApprovedOrOwner", @@ -3021,86 +3026,1023 @@ "type": "function" }, { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "isApprovedForAll", + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownershipChange", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenToStakeRecord", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "operatorStakerAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "stakeRecordId", + "type": "uint256" + } + ], + "internalType": "struct LibStakingStorage.MappedStakeRecord", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "validatorId", + "type": "uint256" + } + ], + "name": "RequestToJoin", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "validatorId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "recordId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "rewards", + "type": "uint256" + } + ], + "name": "StakeRewardsClaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "", + "type": "string" + } + ], + "name": "log", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "log_address", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256[]", + "name": "val", + "type": "uint256[]" + } + ], + "name": "log_array", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "int256[]", + "name": "val", + "type": "int256[]" + } + ], + "name": "log_array", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "val", + "type": "address[]" + } + ], + "name": "log_array", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "log_bytes", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "log_bytes32", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "name": "log_int", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "address", + "name": "val", + "type": "address" + } + ], + "name": "log_named_address", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "val", + "type": "uint256[]" + } + ], + "name": "log_named_array", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "int256[]", + "name": "val", + "type": "int256[]" + } + ], + "name": "log_named_array", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "val", + "type": "address[]" + } + ], + "name": "log_named_array", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "val", + "type": "bytes" + } + ], + "name": "log_named_bytes", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "val", + "type": "bytes32" + } + ], + "name": "log_named_bytes32", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "int256", + "name": "val", + "type": "int256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "decimals", + "type": "uint256" + } + ], + "name": "log_named_decimal_int", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "val", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "decimals", + "type": "uint256" + } + ], + "name": "log_named_decimal_uint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "int256", + "name": "val", + "type": "int256" + } + ], + "name": "log_named_int", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "val", + "type": "string" + } + ], + "name": "log_named_string", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "val", + "type": "uint256" + } + ], + "name": "log_named_uint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "", + "type": "string" + } + ], + "name": "log_string", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "log_uint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "logs", + "type": "event" + }, + { + "inputs": [], + "name": "IS_TEST", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numAddresses", + "type": "uint256" + } + ], + "name": "_generateAddresses", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numAddresses", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "offset", + "type": "uint256" + } + ], + "name": "_generateAddressesWithOffset", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "stakers", + "type": "uint256" + } + ], + "name": "_generatePubKeys", + "outputs": [ + { + "internalType": "bytes[]", + "name": "", + "type": "bytes[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numUint256s", + "type": "uint256" + } + ], + "name": "_generateUint256s", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numUint256s", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "offset", + "type": "uint256" + } + ], + "name": "_generateUint256sWithOffset", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numValidators", + "type": "uint256" + } + ], + "name": "_generateValidators", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "stakerAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "commsKey", + "type": "uint256" + } + ], + "internalType": "struct SetupAndUtils.TestValidator[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "excludeArtifacts", + "outputs": [ + { + "internalType": "string[]", + "name": "excludedArtifacts_", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "excludeContracts", + "outputs": [ + { + "internalType": "address[]", + "name": "excludedContracts_", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "excludeSelectors", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "bytes4[]", + "name": "selectors", + "type": "bytes4[]" + } + ], + "internalType": "struct StdInvariant.FuzzSelector[]", + "name": "excludedSelectors_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "excludeSenders", + "outputs": [ + { + "internalType": "address[]", + "name": "excludedSenders_", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "failed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "setUp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "targetArtifactSelectors", + "outputs": [ + { + "components": [ + { + "internalType": "string", + "name": "artifact", + "type": "string" + }, + { + "internalType": "bytes4[]", + "name": "selectors", + "type": "bytes4[]" + } + ], + "internalType": "struct StdInvariant.FuzzArtifactSelector[]", + "name": "targetedArtifactSelectors_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "targetArtifacts", + "outputs": [ + { + "internalType": "string[]", + "name": "targetedArtifacts_", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "targetContracts", + "outputs": [ + { + "internalType": "address[]", + "name": "targetedContracts_", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "targetInterfaces", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "string[]", + "name": "artifacts", + "type": "string[]" + } + ], + "internalType": "struct StdInvariant.FuzzInterface[]", + "name": "targetedInterfaces_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "targetSelectors", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "bytes4[]", + "name": "selectors", + "type": "bytes4[]" + } + ], + "internalType": "struct StdInvariant.FuzzSelector[]", + "name": "targetedSelectors_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "targetSenders", "outputs": [ { - "internalType": "bool", - "name": "", - "type": "bool" + "internalType": "address[]", + "name": "targetedSenders_", + "type": "address[]" } ], "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "test_Stake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ownerOf", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" } ], - "stateMutability": "view", + "name": "test_StakeAndTransfer", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ownershipChange", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" } ], - "stateMutability": "view", + "name": "test_StakeAndTransfer_ClaimRewards", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" }, { "internalType": "uint256", - "name": "tokenId", + "name": "operation", "type": "uint256" } ], - "name": "safeTransferFrom", + "name": "test_StakeAndTransfer_ReceiverMutatesStakeRecord", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -3108,45 +4050,25 @@ { "inputs": [ { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" } ], - "name": "safeTransferFrom", + "name": "test_StakeAndTransfer_RevertNotOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, { "internalType": "bool", - "name": "approved", + "name": "isSafeTransfer", "type": "bool" } ], - "name": "setApprovalForAll", + "name": "test_StakeAndTransfer_TokenOwnerByIndex", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -3154,90 +4076,69 @@ { "inputs": [ { - "internalType": "address", - "name": "owner", - "type": "address" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" }, { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "tokenOfOwnerByIndex", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" + "internalType": "bool", + "name": "isUnfreezeBeforeTransfer", + "type": "bool" } ], - "stateMutability": "view", + "name": "test_StakeAndTransfer_Withdraw", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" } ], - "name": "tokenToStakeRecord", - "outputs": [ + "name": "test_StakeApproveAndTransfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ { - "components": [ - { - "internalType": "address", - "name": "operatorStakerAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "stakeRecordId", - "type": "uint256" - } - ], - "internalType": "struct LibStakingStorage.MappedStakeRecord", - "name": "", - "type": "tuple" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" } ], - "stateMutability": "view", + "name": "test_StakeApproveForAllAndTransfer", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { - "inputs": [], - "name": "totalSupply", - "outputs": [ + "inputs": [ { - "internalType": "uint256", - "name": "", - "type": "uint256" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" } ], - "stateMutability": "view", + "name": "test_StakeMax_TransferShouldFail", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, { "internalType": "uint256", - "name": "tokenId", + "name": "operation", "type": "uint256" } ], - "name": "transferFrom", + "name": "test_Stake_MutateStakeRecord", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -5230,6 +6131,87 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "userStakerAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "operatorStakerAddress", + "type": "address" + } + ], + "name": "getMostRecentStakeRecord", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "unfreezeStart", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeLock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastRewardEpochClaimed", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSharePrice", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "loaded", + "type": "bool" + }, + { + "internalType": "bool", + "name": "frozen", + "type": "bool" + }, + { + "internalType": "address", + "name": "attributionAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "internalType": "struct LibStakingStorage.StakeRecord", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { diff --git a/rust/lit-core/lit-blockchain-lite/abis/Staking.json b/rust/lit-core/lit-blockchain-lite/abis/Staking.json index 479101e..29edb7b 100644 --- a/rust/lit-core/lit-blockchain-lite/abis/Staking.json +++ b/rust/lit-core/lit-blockchain-lite/abis/Staking.json @@ -2458,6 +2458,25 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "stakerAddress", + "type": "address" + } + ], + "name": "selfStakeBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -2530,25 +2549,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "stakerAddress", - "type": "address" - } - ], - "name": "stakeBalanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -2873,6 +2873,11 @@ "name": "ERC721TransferToNonERC721ReceiverImplementer", "type": "error" }, + { + "inputs": [], + "name": "NoEmptyStakeRecordSlots", + "type": "error" + }, { "inputs": [], "name": "NotApprovedOrOwner", @@ -3025,86 +3030,1023 @@ "type": "function" }, { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "isApprovedForAll", + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownershipChange", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenToStakeRecord", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "operatorStakerAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "stakeRecordId", + "type": "uint256" + } + ], + "internalType": "struct LibStakingStorage.MappedStakeRecord", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "validatorId", + "type": "uint256" + } + ], + "name": "RequestToJoin", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "validatorId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "recordId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "rewards", + "type": "uint256" + } + ], + "name": "StakeRewardsClaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "", + "type": "string" + } + ], + "name": "log", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "log_address", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256[]", + "name": "val", + "type": "uint256[]" + } + ], + "name": "log_array", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "int256[]", + "name": "val", + "type": "int256[]" + } + ], + "name": "log_array", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "val", + "type": "address[]" + } + ], + "name": "log_array", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "log_bytes", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "log_bytes32", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "name": "log_int", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "address", + "name": "val", + "type": "address" + } + ], + "name": "log_named_address", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "val", + "type": "uint256[]" + } + ], + "name": "log_named_array", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "int256[]", + "name": "val", + "type": "int256[]" + } + ], + "name": "log_named_array", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "val", + "type": "address[]" + } + ], + "name": "log_named_array", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "val", + "type": "bytes" + } + ], + "name": "log_named_bytes", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "val", + "type": "bytes32" + } + ], + "name": "log_named_bytes32", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "int256", + "name": "val", + "type": "int256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "decimals", + "type": "uint256" + } + ], + "name": "log_named_decimal_int", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "val", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "decimals", + "type": "uint256" + } + ], + "name": "log_named_decimal_uint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "int256", + "name": "val", + "type": "int256" + } + ], + "name": "log_named_int", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "val", + "type": "string" + } + ], + "name": "log_named_string", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "val", + "type": "uint256" + } + ], + "name": "log_named_uint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "", + "type": "string" + } + ], + "name": "log_string", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "log_uint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "logs", + "type": "event" + }, + { + "inputs": [], + "name": "IS_TEST", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numAddresses", + "type": "uint256" + } + ], + "name": "_generateAddresses", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numAddresses", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "offset", + "type": "uint256" + } + ], + "name": "_generateAddressesWithOffset", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "stakers", + "type": "uint256" + } + ], + "name": "_generatePubKeys", + "outputs": [ + { + "internalType": "bytes[]", + "name": "", + "type": "bytes[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numUint256s", + "type": "uint256" + } + ], + "name": "_generateUint256s", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numUint256s", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "offset", + "type": "uint256" + } + ], + "name": "_generateUint256sWithOffset", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numValidators", + "type": "uint256" + } + ], + "name": "_generateValidators", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "stakerAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "commsKey", + "type": "uint256" + } + ], + "internalType": "struct SetupAndUtils.TestValidator[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "excludeArtifacts", + "outputs": [ + { + "internalType": "string[]", + "name": "excludedArtifacts_", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "excludeContracts", + "outputs": [ + { + "internalType": "address[]", + "name": "excludedContracts_", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "excludeSelectors", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "bytes4[]", + "name": "selectors", + "type": "bytes4[]" + } + ], + "internalType": "struct StdInvariant.FuzzSelector[]", + "name": "excludedSelectors_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "excludeSenders", + "outputs": [ + { + "internalType": "address[]", + "name": "excludedSenders_", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "failed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "setUp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "targetArtifactSelectors", + "outputs": [ + { + "components": [ + { + "internalType": "string", + "name": "artifact", + "type": "string" + }, + { + "internalType": "bytes4[]", + "name": "selectors", + "type": "bytes4[]" + } + ], + "internalType": "struct StdInvariant.FuzzArtifactSelector[]", + "name": "targetedArtifactSelectors_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "targetArtifacts", + "outputs": [ + { + "internalType": "string[]", + "name": "targetedArtifacts_", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "targetContracts", + "outputs": [ + { + "internalType": "address[]", + "name": "targetedContracts_", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "targetInterfaces", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "string[]", + "name": "artifacts", + "type": "string[]" + } + ], + "internalType": "struct StdInvariant.FuzzInterface[]", + "name": "targetedInterfaces_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "targetSelectors", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "bytes4[]", + "name": "selectors", + "type": "bytes4[]" + } + ], + "internalType": "struct StdInvariant.FuzzSelector[]", + "name": "targetedSelectors_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "targetSenders", "outputs": [ { - "internalType": "bool", - "name": "", - "type": "bool" + "internalType": "address[]", + "name": "targetedSenders_", + "type": "address[]" } ], "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "test_Stake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ownerOf", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" } ], - "stateMutability": "view", + "name": "test_StakeAndTransfer", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ownershipChange", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" } ], - "stateMutability": "view", + "name": "test_StakeAndTransfer_ClaimRewards", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" }, { "internalType": "uint256", - "name": "tokenId", + "name": "operation", "type": "uint256" } ], - "name": "safeTransferFrom", + "name": "test_StakeAndTransfer_ReceiverMutatesStakeRecord", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -3112,45 +4054,25 @@ { "inputs": [ { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" } ], - "name": "safeTransferFrom", + "name": "test_StakeAndTransfer_RevertNotOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, { "internalType": "bool", - "name": "approved", + "name": "isSafeTransfer", "type": "bool" } ], - "name": "setApprovalForAll", + "name": "test_StakeAndTransfer_TokenOwnerByIndex", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -3158,90 +4080,69 @@ { "inputs": [ { - "internalType": "address", - "name": "owner", - "type": "address" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" }, { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "tokenOfOwnerByIndex", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" + "internalType": "bool", + "name": "isUnfreezeBeforeTransfer", + "type": "bool" } ], - "stateMutability": "view", + "name": "test_StakeAndTransfer_Withdraw", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" } ], - "name": "tokenToStakeRecord", - "outputs": [ + "name": "test_StakeApproveAndTransfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ { - "components": [ - { - "internalType": "address", - "name": "operatorStakerAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "stakeRecordId", - "type": "uint256" - } - ], - "internalType": "struct LibStakingStorage.MappedStakeRecord", - "name": "", - "type": "tuple" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" } ], - "stateMutability": "view", + "name": "test_StakeApproveForAllAndTransfer", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { - "inputs": [], - "name": "totalSupply", - "outputs": [ + "inputs": [ { - "internalType": "uint256", - "name": "", - "type": "uint256" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" } ], - "stateMutability": "view", + "name": "test_StakeMax_TransferShouldFail", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, { "internalType": "uint256", - "name": "tokenId", + "name": "operation", "type": "uint256" } ], - "name": "transferFrom", + "name": "test_Stake_MutateStakeRecord", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -5234,6 +6135,87 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "userStakerAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "operatorStakerAddress", + "type": "address" + } + ], + "name": "getMostRecentStakeRecord", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "unfreezeStart", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeLock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastRewardEpochClaimed", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSharePrice", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "loaded", + "type": "bool" + }, + { + "internalType": "bool", + "name": "frozen", + "type": "bool" + }, + { + "internalType": "address", + "name": "attributionAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "internalType": "struct LibStakingStorage.StakeRecord", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { diff --git a/rust/lit-core/lit-blockchain-lite/src/contracts/staking.rs b/rust/lit-core/lit-blockchain-lite/src/contracts/staking.rs index 406bd4c..936bbac 100644 --- a/rust/lit-core/lit-blockchain-lite/src/contracts/staking.rs +++ b/rust/lit-core/lit-blockchain-lite/src/contracts/staking.rs @@ -23,6 +23,8 @@ abi_functions.append(&mut __abi_functions_2()); abi_functions.append(&mut __abi_functions_3()); abi_functions.append(&mut __abi_functions_4()); + +abi_functions.append(&mut __abi_functions_5()); std::collections::BTreeMap::from( abi_functions @@ -34,6 +36,261 @@ abi_functions.append(&mut __abi_functions_4()); std::collections::BTreeMap::from( [ + ( + ::std::borrow::ToOwned::to_owned("IS_TEST"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("IS_TEST"), + inputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("_generateAddresses"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("_generateAddresses"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("numAddresses"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address[]"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("_generateAddressesWithOffset"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "_generateAddressesWithOffset", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("numAddresses"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("offset"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address[]"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("_generatePubKeys"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("_generatePubKeys"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakers"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Bytes, + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes[]"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("_generateUint256s"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("_generateUint256s"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("numUint256s"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256[]"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("_generateUint256sWithOffset"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "_generateUint256sWithOffset", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("numUint256s"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("offset"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256[]"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("_generateValidators"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "_generateValidators", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("numValidators"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], + ), + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct SetupAndUtils.TestValidator[]", + ), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("addRealm"), ::std::vec![ @@ -1128,23 +1385,136 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("exit"), + ::std::borrow::ToOwned::to_owned("excludeArtifacts"), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("exit"), + name: ::std::borrow::ToOwned::to_owned("excludeArtifacts"), inputs: ::std::vec![], - outputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "excludedArtifacts_", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::String, + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string[]"), + ), + }, + ], constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, }, ], ), ( - ::std::borrow::ToOwned::to_owned("facetAddress"), + ::std::borrow::ToOwned::to_owned("excludeContracts"), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("facetAddress"), - inputs: ::std::vec![ + name: ::std::borrow::ToOwned::to_owned("excludeContracts"), + inputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "excludedContracts_", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address[]"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("excludeSelectors"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("excludeSelectors"), + inputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "excludedSelectors_", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize), + ), + ), + ], + ), + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct StdInvariant.FuzzSelector[]", + ), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("excludeSenders"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("excludeSenders"), + inputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("excludedSenders_"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address[]"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("exit"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("exit"), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("facetAddress"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("facetAddress"), + inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { name: ::std::borrow::ToOwned::to_owned("_functionSelector"), kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( @@ -1264,6 +1634,26 @@ abi_functions.append(&mut __abi_functions_4()); }, ], ), + ( + ::std::borrow::ToOwned::to_owned("failed"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("failed"), + inputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("getActiveUnkickedValidatorCount"), ::std::vec![ @@ -1297,8 +1687,19 @@ abi_functions.append(&mut __abi_functions_4()); state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, }, ], - ), - ( + ) + ] + ) + } + + + +#[allow(deprecated)] + fn __abi_functions_2() -> std::collections::BTreeMap> { + + std::collections::BTreeMap::from( + [ + ( ::std::borrow::ToOwned::to_owned( "getActiveUnkickedValidatorStructs", ), @@ -1782,19 +2183,8 @@ abi_functions.append(&mut __abi_functions_4()); state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, }, ], - ) - ] - ) - } - - - -#[allow(deprecated)] - fn __abi_functions_2() -> std::collections::BTreeMap> { - - std::collections::BTreeMap::from( - [ - ( + ), + ( ::std::borrow::ToOwned::to_owned("getKeySet"), ::std::vec![ ::ethers::core::abi::ethabi::Function { @@ -2226,6 +2616,61 @@ abi_functions.append(&mut __abi_functions_4()); }, ], ), + ( + ::std::borrow::ToOwned::to_owned("getMostRecentStakeRecord"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "getMostRecentStakeRecord", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("userStakerAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "operatorStakerAddress", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bool, + ::ethers::core::abi::ethabi::ParamType::Bool, + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct LibStakingStorage.StakeRecord", + ), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("getNodeAttestedPubKeyMappings"), ::std::vec![ @@ -3241,8 +3686,19 @@ abi_functions.append(&mut __abi_functions_4()); state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, }, ], - ), - ( + ) + ] + ) + } + + + +#[allow(deprecated)] + fn __abi_functions_3() -> std::collections::BTreeMap> { + + std::collections::BTreeMap::from( + [ + ( ::std::borrow::ToOwned::to_owned("getTrustedForwarder"), ::std::vec![ ::ethers::core::abi::ethabi::Function { @@ -3823,19 +4279,8 @@ abi_functions.append(&mut __abi_functions_4()); state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, }, ], - ) - ] - ) - } - - - -#[allow(deprecated)] - fn __abi_functions_3() -> std::collections::BTreeMap> { - - std::collections::BTreeMap::from( - [ - ( + ), + ( ::std::borrow::ToOwned::to_owned("initializeRewardEpoch"), ::std::vec![ ::ethers::core::abi::ethabi::Function { @@ -5082,8 +5527,19 @@ abi_functions.append(&mut __abi_functions_4()); state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, }, ], - ), - ( + ) + ] + ) + } + + + +#[allow(deprecated)] + fn __abi_functions_4() -> std::collections::BTreeMap> { + + std::collections::BTreeMap::from( + [ + ( ::std::borrow::ToOwned::to_owned("registerAttestedWallet"), ::std::vec![ ::ethers::core::abi::ethabi::Function { @@ -5385,37 +5841,67 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("setApprovalForAll"), + ::std::borrow::ToOwned::to_owned("selfStakeBalanceOf"), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setApprovalForAll"), + name: ::std::borrow::ToOwned::to_owned("selfStakeBalanceOf"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("operator"), + name: ::std::borrow::ToOwned::to_owned("stakerAddress"), kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( ::std::borrow::ToOwned::to_owned("address"), ), }, + ], + outputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("approved"), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bool"), + ::std::borrow::ToOwned::to_owned("uint256"), ), }, ], - outputs: ::std::vec![], constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, }, ], ), ( - ::std::borrow::ToOwned::to_owned("setComplaintConfig"), + ::std::borrow::ToOwned::to_owned("setApprovalForAll"), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("setComplaintConfig"), + name: ::std::borrow::ToOwned::to_owned("setApprovalForAll"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("operator"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("approved"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("setComplaintConfig"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("setComplaintConfig"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { name: ::std::borrow::ToOwned::to_owned("reason"), @@ -5523,19 +6009,8 @@ abi_functions.append(&mut __abi_functions_4()); state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, }, ], - ) - ] - ) - } - - - -#[allow(deprecated)] - fn __abi_functions_4() -> std::collections::BTreeMap> { - - std::collections::BTreeMap::from( - [ - ( + ), + ( ::std::borrow::ToOwned::to_owned("setDemeritRejoinThreshold"), ::std::vec![ ::ethers::core::abi::ethabi::Function { @@ -6098,6 +6573,18 @@ abi_functions.append(&mut __abi_functions_4()); }, ], ), + ( + ::std::borrow::ToOwned::to_owned("setUp"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("setUp"), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("setValidatorCommissionRate"), ::std::vec![ @@ -6272,36 +6759,6 @@ abi_functions.append(&mut __abi_functions_4()); }, ], ), - ( - ::std::borrow::ToOwned::to_owned("stakeBalanceOf"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("stakeBalanceOf"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakerAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), ( ::std::borrow::ToOwned::to_owned("stakerToValidatorsTheyStakedTo"), ::std::vec![ @@ -6399,38 +6856,62 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("tokenOfOwnerByIndex"), + ::std::borrow::ToOwned::to_owned("targetArtifactSelectors"), ::std::vec![ ::ethers::core::abi::ethabi::Function { name: ::std::borrow::ToOwned::to_owned( - "tokenOfOwnerByIndex", + "targetArtifactSelectors", ), - inputs: ::std::vec![ + inputs: ::std::vec![], + outputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + name: ::std::borrow::ToOwned::to_owned( + "targetedArtifactSelectors_", ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("index"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::String, + ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize), + ), + ), + ], + ), + ), ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned( + "struct StdInvariant.FuzzArtifactSelector[]", + ), ), }, ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("targetArtifacts"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("targetArtifacts"), + inputs: ::std::vec![], outputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + name: ::std::borrow::ToOwned::to_owned( + "targetedArtifacts_", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::String, + ), ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned("string[]"), ), }, ], @@ -6440,33 +6921,59 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("tokenToStakeRecord"), + ::std::borrow::ToOwned::to_owned("targetContracts"), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("tokenToStakeRecord"), - inputs: ::std::vec![ + name: ::std::borrow::ToOwned::to_owned("targetContracts"), + inputs: ::std::vec![], + outputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + name: ::std::borrow::ToOwned::to_owned( + "targetedContracts_", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned("address[]"), ), }, ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("targetInterfaces"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("targetInterfaces"), + inputs: ::std::vec![], outputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], + name: ::std::borrow::ToOwned::to_owned( + "targetedInterfaces_", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::String, + ), + ), + ], + ), + ), ), internal_type: ::core::option::Option::Some( ::std::borrow::ToOwned::to_owned( - "struct LibStakingStorage.MappedStakeRecord", + "struct StdInvariant.FuzzInterface[]", ), ), }, @@ -6477,19 +6984,34 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("totalSupply"), + ::std::borrow::ToOwned::to_owned("targetSelectors"), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("totalSupply"), + name: ::std::borrow::ToOwned::to_owned("targetSelectors"), inputs: ::std::vec![], outputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + name: ::std::borrow::ToOwned::to_owned( + "targetedSelectors_", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize), + ), + ), + ], + ), + ), ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned( + "struct StdInvariant.FuzzSelector[]", + ), ), }, ], @@ -6499,35 +7021,35 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("transferFrom"), + ::std::borrow::ToOwned::to_owned("targetSenders"), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferFrom"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, + name: ::std::borrow::ToOwned::to_owned("targetSenders"), + inputs: ::std::vec![], + outputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + name: ::std::borrow::ToOwned::to_owned("targetedSenders_"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned("address[]"), ), }, ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("test_Stake"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("test_Stake"), + inputs: ::std::vec![], outputs: ::std::vec![], constant: ::core::option::Option::None, state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, @@ -6535,16 +7057,18 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("transferOwnership"), + ::std::borrow::ToOwned::to_owned("test_StakeAndTransfer"), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferOwnership"), + name: ::std::borrow::ToOwned::to_owned( + "test_StakeAndTransfer", + ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("isSafeTransfer"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("bool"), ), }, ], @@ -6555,27 +7079,20 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("unfreezeStake"), + ::std::borrow::ToOwned::to_owned( + "test_StakeAndTransfer_ClaimRewards", + ), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("unfreezeStake"), + name: ::std::borrow::ToOwned::to_owned( + "test_StakeAndTransfer_ClaimRewards", + ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "operatorStakerAddress", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakeId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), + name: ::std::borrow::ToOwned::to_owned("isSafeTransfer"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned("bool"), ), }, ], @@ -6586,192 +7103,237 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("validatorSelfStakeWillExpire"), + ::std::borrow::ToOwned::to_owned( + "test_StakeAndTransfer_ReceiverMutatesStakeRecord", + ), ::std::vec![ ::ethers::core::abi::ethabi::Function { name: ::std::borrow::ToOwned::to_owned( - "validatorSelfStakeWillExpire", + "test_StakeAndTransfer_ReceiverMutatesStakeRecord", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("realmId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), + name: ::std::borrow::ToOwned::to_owned("isSafeTransfer"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned("bool"), ), }, ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakerAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("operation"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("uint256"), ), }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ) + ] + ) + } + + + +#[allow(deprecated)] + fn __abi_functions_5() -> std::collections::BTreeMap> { + + std::collections::BTreeMap::from( + [ + ( + ::std::borrow::ToOwned::to_owned( + "test_StakeAndTransfer_RevertNotOwner", + ), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "test_StakeAndTransfer_RevertNotOwner", + ), + inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "stakerInCurrentValidatorSet", - ), + name: ::std::borrow::ToOwned::to_owned("isSafeTransfer"), kind: ::ethers::core::abi::ethabi::ParamType::Bool, internal_type: ::core::option::Option::Some( ::std::borrow::ToOwned::to_owned("bool"), ), }, ], - outputs: ::std::vec![ + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned( + "test_StakeAndTransfer_TokenOwnerByIndex", + ), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "test_StakeAndTransfer_TokenOwnerByIndex", + ), + inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), + name: ::std::borrow::ToOwned::to_owned("isSafeTransfer"), kind: ::ethers::core::abi::ethabi::ParamType::Bool, internal_type: ::core::option::Option::Some( ::std::borrow::ToOwned::to_owned("bool"), ), }, ], + outputs: ::std::vec![], constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, }, ], ), ( - ::std::borrow::ToOwned::to_owned("validator_by_staker_address"), + ::std::borrow::ToOwned::to_owned("test_StakeAndTransfer_Withdraw"), ::std::vec![ ::ethers::core::abi::ethabi::Function { name: ::std::borrow::ToOwned::to_owned( - "validator_by_staker_address", + "test_StakeAndTransfer_Withdraw", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakerAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("isSafeTransfer"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("bool"), ), }, - ], - outputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Uint(32usize), - ::ethers::core::abi::ethabi::ParamType::Uint(128usize), - ::ethers::core::abi::ethabi::ParamType::Uint(32usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bool, - ], + name: ::std::borrow::ToOwned::to_owned( + "isUnfreezeBeforeTransfer", ), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct LibStakingStorage.Validator", - ), + ::std::borrow::ToOwned::to_owned("bool"), ), }, ], + outputs: ::std::vec![], constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, }, ], ), ( - ::std::borrow::ToOwned::to_owned("validators"), + ::std::borrow::ToOwned::to_owned("test_StakeApproveAndTransfer"), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("validators"), + name: ::std::borrow::ToOwned::to_owned( + "test_StakeApproveAndTransfer", + ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakerAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("isSafeTransfer"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("bool"), ), }, ], - outputs: ::std::vec![ + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned( + "test_StakeApproveForAllAndTransfer", + ), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "test_StakeApproveForAllAndTransfer", + ), + inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Uint(32usize), - ::ethers::core::abi::ethabi::ParamType::Uint(128usize), - ::ethers::core::abi::ethabi::ParamType::Uint(32usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bool, - ], - ), + name: ::std::borrow::ToOwned::to_owned("isSafeTransfer"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct LibStakingStorage.Validator", - ), + ::std::borrow::ToOwned::to_owned("bool"), ), }, ], + outputs: ::std::vec![], constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, }, ], ), ( - ::std::borrow::ToOwned::to_owned("verifyKeySetCounts"), + ::std::borrow::ToOwned::to_owned("test_StakeMax_TransferShouldFail"), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("verifyKeySetCounts"), + name: ::std::borrow::ToOwned::to_owned( + "test_StakeMax_TransferShouldFail", + ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("identifier"), - kind: ::ethers::core::abi::ethabi::ParamType::String, + name: ::std::borrow::ToOwned::to_owned("isSafeTransfer"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), + ::std::borrow::ToOwned::to_owned("bool"), ), }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("test_Stake_MutateStakeRecord"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "test_Stake_MutateStakeRecord", + ), + inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newRootKeys"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ), + name: ::std::borrow::ToOwned::to_owned("operation"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct IPubkeyRouter.RootKey[]", - ), + ::std::borrow::ToOwned::to_owned("uint256"), ), }, ], - outputs: ::std::vec![ + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("tokenOfOwnerByIndex"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "tokenOfOwnerByIndex", + ), + inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("index"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -6779,6 +7341,8 @@ abi_functions.append(&mut __abi_functions_4()); ::std::borrow::ToOwned::to_owned("uint256"), ), }, + ], + outputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { name: ::std::string::String::new(), kind: ::ethers::core::abi::ethabi::ParamType::Uint( @@ -6795,22 +7359,13 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("withdraw"), + ::std::borrow::ToOwned::to_owned("tokenToStakeRecord"), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("withdraw"), + name: ::std::borrow::ToOwned::to_owned("tokenToStakeRecord"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "operatorStakerAddress", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakeRecordId"), + name: ::std::borrow::ToOwned::to_owned("tokenId"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -6819,285 +7374,412 @@ abi_functions.append(&mut __abi_functions_4()); ), }, ], - outputs: ::std::vec![], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, - }, - ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct LibStakingStorage.MappedStakeRecord", + ), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], ), - ] - ) - } - - - -#[allow(deprecated)] - fn __abi_events() -> std::collections::BTreeMap> { - - std::collections::BTreeMap::from( - [ ( - ::std::borrow::ToOwned::to_owned("AdvancedEpoch"), + ::std::borrow::ToOwned::to_owned("totalSupply"), ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("AdvancedEpoch"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("realmId"), + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("totalSupply"), + inputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("epochNumber"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), ), - indexed: false, }, ], - anonymous: false, + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, }, ], ), ( - ::std::borrow::ToOwned::to_owned("Approval"), + ::std::borrow::ToOwned::to_owned("transferFrom"), ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Approval"), + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("transferFrom"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("from"), kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("approved"), + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), }, - ::ethers::core::abi::ethabi::EventParam { + ::ethers::core::abi::ethabi::Param { name: ::std::borrow::ToOwned::to_owned("tokenId"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), - indexed: true, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), }, ], - anonymous: false, + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, }, ], ), ( - ::std::borrow::ToOwned::to_owned("ApprovalForAll"), + ::std::borrow::ToOwned::to_owned("transferOwnership"), ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("ApprovalForAll"), + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("transferOwnership"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("operator"), + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_newOwner"), kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("approved"), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - indexed: false, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), }, ], - anonymous: false, + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, }, ], ), ( - ::std::borrow::ToOwned::to_owned("AttestedWalletRegistered"), + ::std::borrow::ToOwned::to_owned("unfreezeStake"), ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "AttestedWalletRegistered", - ), + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("unfreezeStake"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("staker"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("attestedAddress"), + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "operatorStakerAddress", + ), kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("attestedPubKey"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakeId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), ), - indexed: true, }, ], - anonymous: false, + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, }, ], ), ( - ::std::borrow::ToOwned::to_owned("ClearOfflinePhaseData"), + ::std::borrow::ToOwned::to_owned("validatorSelfStakeWillExpire"), ::std::vec![ - ::ethers::core::abi::ethabi::Event { + ::ethers::core::abi::ethabi::Function { name: ::std::borrow::ToOwned::to_owned( - "ClearOfflinePhaseData", + "validatorSelfStakeWillExpire", ), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("dataType"), + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("realmId"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), - indexed: false, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakerAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "stakerInCurrentValidatorSet", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), }, ], - anonymous: false, + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, }, ], ), ( - ::std::borrow::ToOwned::to_owned("ComplaintConfigSet"), + ::std::borrow::ToOwned::to_owned("validator_by_staker_address"), ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("ComplaintConfigSet"), + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "validator_by_staker_address", + ), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("reason"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakerAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), ), - indexed: false, }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("config"), + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), kind: ::ethers::core::abi::ethabi::ParamType::Tuple( ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + ::ethers::core::abi::ethabi::ParamType::Uint(128usize), + ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bool, ], ), - indexed: false, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct LibStakingStorage.Validator", + ), + ), }, ], - anonymous: false, + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, }, ], ), ( - ::std::borrow::ToOwned::to_owned("ConfigSet"), + ::std::borrow::ToOwned::to_owned("validators"), ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("ConfigSet"), + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("validators"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned( - "newTokenRewardPerTokenPerEpoch", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakerAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), ), - indexed: false, }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newKeyTypes"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + ::ethers::core::abi::ethabi::ParamType::Uint(128usize), + ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bool, + ], + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct LibStakingStorage.Validator", ), ), - indexed: false, }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned( - "newMinimumValidatorCount", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("verifyKeySetCounts"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("verifyKeySetCounts"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("identifier"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), ), - indexed: false, }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned( - "newMaxConcurrentRequests", + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("newRootKeys"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], + ), + ), ), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct IPubkeyRouter.RootKey[]", + ), ), - indexed: false, }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned( - "newMaxPresignCount", - ), + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned( - "newMinPresignCount", + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), - indexed: false, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), }, - ::ethers::core::abi::ethabi::EventParam { + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("withdraw"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("withdraw"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { name: ::std::borrow::ToOwned::to_owned( - "newPeerCheckingIntervalSecs", + "operatorStakerAddress", ), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), ), - indexed: false, }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned( - "newMaxPresignConcurrency", - ), + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakeRecordId"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned( - "newRpcHealthcheckEnabled", + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), ), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - indexed: false, }, ], - anonymous: false, + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, }, ], ), + ] + ) + } + + + +#[allow(deprecated)] + fn __abi_events() -> std::collections::BTreeMap> { + let mut abi_events = __abi_events_1(); +abi_events.append(&mut __abi_events_2()); + + std::collections::BTreeMap::from( + abi_events + ) + } + + #[allow(deprecated)] + fn __abi_events_1() -> std::collections::BTreeMap> { + + std::collections::BTreeMap::from( + [ ( - ::std::borrow::ToOwned::to_owned("CountOfflinePhaseData"), + ::std::borrow::ToOwned::to_owned("AdvancedEpoch"), ::std::vec![ ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "CountOfflinePhaseData", - ), + name: ::std::borrow::ToOwned::to_owned("AdvancedEpoch"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("dataType"), + name: ::std::borrow::ToOwned::to_owned("realmId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("epochNumber"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -7109,27 +7791,27 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("DebugEvent"), + ::std::borrow::ToOwned::to_owned("Approval"), ::std::vec![ ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("DebugEvent"), + name: ::std::borrow::ToOwned::to_owned("Approval"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("message"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - indexed: false, + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, }, ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("sender"), + name: ::std::borrow::ToOwned::to_owned("approved"), kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, + indexed: true, }, ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("value"), + name: ::std::borrow::ToOwned::to_owned("tokenId"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), - indexed: false, + indexed: true, }, ], anonymous: false, @@ -7137,54 +7819,24 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("DevopsAdminSet"), + ::std::borrow::ToOwned::to_owned("ApprovalForAll"), ::std::vec![ ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("DevopsAdminSet"), + name: ::std::borrow::ToOwned::to_owned("ApprovalForAll"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newDevopsAdmin"), + name: ::std::borrow::ToOwned::to_owned("owner"), kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, - }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("DiamondCut"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("DiamondCut"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_diamondCut"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(8usize), - ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize), - ), - ), - ], - ), - ), - ), - indexed: false, + indexed: true, }, ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_init"), + name: ::std::borrow::ToOwned::to_owned("operator"), kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: false, + indexed: true, }, ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("_calldata"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + name: ::std::borrow::ToOwned::to_owned("approved"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, indexed: false, }, ], @@ -7193,24 +7845,32 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("EpochEndTimeSet"), + ::std::borrow::ToOwned::to_owned("AttestedWalletRegistered"), ::std::vec![ ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("EpochEndTimeSet"), + name: ::std::borrow::ToOwned::to_owned( + "AttestedWalletRegistered", + ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("realmId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, + name: ::std::borrow::ToOwned::to_owned("staker"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, }, ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newEpochEndTime"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + name: ::std::borrow::ToOwned::to_owned("attestedAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("attestedPubKey"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], ), - indexed: false, + indexed: true, }, ], anonymous: false, @@ -7218,20 +7878,15 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("EpochLengthSet"), + ::std::borrow::ToOwned::to_owned("ClearOfflinePhaseData"), ::std::vec![ ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("EpochLengthSet"), + name: ::std::borrow::ToOwned::to_owned( + "ClearOfflinePhaseData", + ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("realmId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newEpochLength"), + name: ::std::borrow::ToOwned::to_owned("dataType"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -7243,22 +7898,27 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("EpochTimeoutSet"), + ::std::borrow::ToOwned::to_owned("ComplaintConfigSet"), ::std::vec![ ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("EpochTimeoutSet"), + name: ::std::borrow::ToOwned::to_owned("ComplaintConfigSet"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("realmId"), + name: ::std::borrow::ToOwned::to_owned("reason"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), indexed: false, }, ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newEpochTimeout"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + name: ::std::borrow::ToOwned::to_owned("config"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], ), indexed: false, }, @@ -7268,65 +7928,88 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("FixedCostRewardsClaimed"), + ::std::borrow::ToOwned::to_owned("ConfigSet"), ::std::vec![ ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "FixedCostRewardsClaimed", - ), + name: ::std::borrow::ToOwned::to_owned("ConfigSet"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("stakerAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned( + "newTokenRewardPerTokenPerEpoch", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), indexed: false, }, ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("rewards"), + name: ::std::borrow::ToOwned::to_owned("newKeyTypes"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ), + ), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned( + "newMinimumValidatorCount", + ), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), indexed: false, }, ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("fromEpoch"), + name: ::std::borrow::ToOwned::to_owned( + "newMaxConcurrentRequests", + ), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), indexed: false, }, ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("toEpoch"), + name: ::std::borrow::ToOwned::to_owned( + "newMaxPresignCount", + ), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), indexed: false, }, - ], - anonymous: false, - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("KeySetConfigSet"), - ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("KeySetConfigSet"), - inputs: ::std::vec![ ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("exists"), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, + name: ::std::borrow::ToOwned::to_owned( + "newMinPresignCount", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), indexed: false, }, ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("identifier"), - kind: ::ethers::core::abi::ethabi::ParamType::String, + name: ::std::borrow::ToOwned::to_owned( + "newPeerCheckingIntervalSecs", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), indexed: false, }, ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("hashed"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 32usize, + name: ::std::borrow::ToOwned::to_owned( + "newMaxPresignConcurrency", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned( + "newRpcHealthcheckEnabled", ), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, indexed: false, }, ], @@ -7335,16 +8018,18 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("KeySetConfigUpdated"), + ::std::borrow::ToOwned::to_owned("CountOfflinePhaseData"), ::std::vec![ ::ethers::core::abi::ethabi::Event { name: ::std::borrow::ToOwned::to_owned( - "KeySetConfigUpdated", + "CountOfflinePhaseData", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("identifier"), - kind: ::ethers::core::abi::ethabi::ParamType::String, + name: ::std::borrow::ToOwned::to_owned("dataType"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), indexed: false, }, ], @@ -7353,24 +8038,23 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("KickPenaltyPercentSet"), + ::std::borrow::ToOwned::to_owned("DebugEvent"), ::std::vec![ ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "KickPenaltyPercentSet", - ), + name: ::std::borrow::ToOwned::to_owned("DebugEvent"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("reason"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), + name: ::std::borrow::ToOwned::to_owned("message"), + kind: ::ethers::core::abi::ethabi::ParamType::String, indexed: false, }, ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned( - "newKickPenaltyPercent", - ), + name: ::std::borrow::ToOwned::to_owned("sender"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("value"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -7382,22 +8066,55 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), + ::std::borrow::ToOwned::to_owned("DevopsAdminSet"), ::std::vec![ ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "OwnershipTransferred", - ), + name: ::std::borrow::ToOwned::to_owned("DevopsAdminSet"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("previousOwner"), + name: ::std::borrow::ToOwned::to_owned("newDevopsAdmin"), kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, + indexed: false, }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("DiamondCut"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("DiamondCut"), + inputs: ::std::vec![ ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newOwner"), + name: ::std::borrow::ToOwned::to_owned("_diamondCut"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize), + ), + ), + ], + ), + ), + ), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("_init"), kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("_calldata"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, }, ], anonymous: false, @@ -7405,18 +8122,20 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("ReadyForNextEpoch"), + ::std::borrow::ToOwned::to_owned("EpochEndTimeSet"), ::std::vec![ ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("ReadyForNextEpoch"), + name: ::std::borrow::ToOwned::to_owned("EpochEndTimeSet"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("staker"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, + name: ::std::borrow::ToOwned::to_owned("realmId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, }, ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("epochNumber"), + name: ::std::borrow::ToOwned::to_owned("newEpochEndTime"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -7428,18 +8147,20 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("Recovered"), + ::std::borrow::ToOwned::to_owned("EpochLengthSet"), ::std::vec![ ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Recovered"), + name: ::std::borrow::ToOwned::to_owned("EpochLengthSet"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("token"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("realmId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), indexed: false, }, ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("amount"), + name: ::std::borrow::ToOwned::to_owned("newEpochLength"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -7451,15 +8172,24 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("RequestToJoin"), + ::std::borrow::ToOwned::to_owned("EpochTimeoutSet"), ::std::vec![ ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("RequestToJoin"), + name: ::std::borrow::ToOwned::to_owned("EpochTimeoutSet"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("staker"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, + name: ::std::borrow::ToOwned::to_owned("realmId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("newEpochTimeout"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, }, ], anonymous: false, @@ -7467,7 +8197,219 @@ abi_functions.append(&mut __abi_functions_4()); ], ), ( - ::std::borrow::ToOwned::to_owned("RequestToLeave"), + ::std::borrow::ToOwned::to_owned("FixedCostRewardsClaimed"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned( + "FixedCostRewardsClaimed", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("stakerAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("rewards"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("fromEpoch"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("toEpoch"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("KeySetConfigSet"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("KeySetConfigSet"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("exists"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("identifier"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("hashed"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( + 32usize, + ), + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("KeySetConfigUpdated"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned( + "KeySetConfigUpdated", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("identifier"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("KickPenaltyPercentSet"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned( + "KickPenaltyPercentSet", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("reason"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned( + "newKickPenaltyPercent", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("OwnershipTransferred"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned( + "OwnershipTransferred", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("previousOwner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("newOwner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ReadyForNextEpoch"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("ReadyForNextEpoch"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("staker"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("epochNumber"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("Recovered"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Recovered"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("token"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("RequestToJoin"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("RequestToJoin"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("validatorId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: true, + }, + ], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("RequestToJoin"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("staker"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("RequestToLeave"), ::std::vec![ ::ethers::core::abi::ethabi::Event { name: ::std::borrow::ToOwned::to_owned("RequestToLeave"), @@ -7649,6 +8591,35 @@ abi_functions.append(&mut __abi_functions_4()); ], anonymous: false, }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned( + "StakeRewardsClaimed", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("validatorId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("recordId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("rewards"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ], + anonymous: false, + }, ], ), ( @@ -7983,625 +8954,557 @@ abi_functions.append(&mut __abi_functions_4()); }, ], ), - ] - ) - } - - #[allow(deprecated)] - fn __abi_errors() -> std::collections::BTreeMap> { - let mut abi_errors = __abi_errors_1(); -abi_errors.append(&mut __abi_errors_2()); - - std::collections::BTreeMap::from( - abi_errors - ) - } - - #[allow(deprecated)] - fn __abi_errors_1() -> std::collections::BTreeMap> { - - std::collections::BTreeMap::from( - [ - ( - ::std::borrow::ToOwned::to_owned("ActiveValidatorsCannotLeave"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "ActiveValidatorsCannotLeave", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("CallerNotContract"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("CallerNotContract"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("CallerNotOwner"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("CallerNotOwner"), - inputs: ::std::vec![], - }, - ], - ), ( - ::std::borrow::ToOwned::to_owned("CallerNotOwnerOrDevopsAdmin"), + ::std::borrow::ToOwned::to_owned("log"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CallerNotOwnerOrDevopsAdmin", - ), - inputs: ::std::vec![], + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned( - "CannotAddFunctionToDiamondThatAlreadyExists", - ), + ::std::borrow::ToOwned::to_owned("log_address"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotAddFunctionToDiamondThatAlreadyExists", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_address"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_selector"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 4usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), - ), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, }, ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned("CannotAddSelectorsToZeroAddress"), + ::std::borrow::ToOwned::to_owned("log_array"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotAddSelectorsToZeroAddress", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_array"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_selectors"), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), kind: ::ethers::core::abi::ethabi::ParamType::Array( ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ), ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4[]"), - ), + indexed: false, }, ], + anonymous: false, }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned( - "CannotKickBelowCurrentValidatorThreshold", - ), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotKickBelowCurrentValidatorThreshold", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("CannotMigrateFromValidator"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotMigrateFromValidator", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("CannotModifyUnfrozen"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotModifyUnfrozen", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned( - "CannotMoveToLockedValidatorStateBeforeEpochEnds", - ), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotMoveToLockedValidatorStateBeforeEpochEnds", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("CannotRejoinBecauseBanned"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotRejoinBecauseBanned", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_array"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakingAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Int(256usize), + ), ), + indexed: false, }, ], + anonymous: false, }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned( - "CannotRejoinUntilNextEpochBecauseKicked", - ), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotRejoinUntilNextEpochBecauseKicked", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_array"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakingAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), ), + indexed: false, }, ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned( - "CannotRemoveFunctionThatDoesNotExist", - ), + ::std::borrow::ToOwned::to_owned("log_bytes"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotRemoveFunctionThatDoesNotExist", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_bytes"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_selector"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 4usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), - ), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, }, ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned("CannotRemoveImmutableFunction"), + ::std::borrow::ToOwned::to_owned("log_bytes32"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotRemoveImmutableFunction", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_bytes32"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_selector"), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 4usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), + 32usize, ), + indexed: false, }, ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned( - "CannotReplaceFunctionThatDoesNotExists", - ), + ::std::borrow::ToOwned::to_owned("log_int"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotReplaceFunctionThatDoesNotExists", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_int"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_selector"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 4usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), - ), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + indexed: false, }, ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned( - "CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet", - ), + ::std::borrow::ToOwned::to_owned("log_named_address"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_address"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_selector"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 4usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), - ), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned( - "CannotReplaceFunctionsFromFacetWithZeroAddress", - ), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ], + anonymous: false, + }, + ], + ) + ] + ) + } + + + +#[allow(deprecated)] + fn __abi_events_2() -> std::collections::BTreeMap> { + + std::collections::BTreeMap::from( + [ + ( + ::std::borrow::ToOwned::to_owned("log_named_array"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotReplaceFunctionsFromFacetWithZeroAddress", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_array"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_selectors"), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), kind: ::ethers::core::abi::ethabi::ParamType::Array( ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ), ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4[]"), - ), + indexed: false, }, ], + anonymous: false, }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("CannotReplaceImmutableFunction"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotReplaceImmutableFunction", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_array"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_selector"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 4usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Int(256usize), + ), ), + indexed: false, }, ], + anonymous: false, }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("CannotReuseCommsKeys"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotReuseCommsKeys", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_array"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("senderPubKey"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("receiverPubKey"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), ), + indexed: false, }, ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned("CannotStakeZero"), + ::std::borrow::ToOwned::to_owned("log_named_bytes"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("CannotStakeZero"), - inputs: ::std::vec![], + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_bytes"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + }, + ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned("CannotVoteTwice"), + ::std::borrow::ToOwned::to_owned("log_named_bytes32"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("CannotVoteTwice"), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_bytes32"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakerAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( + 32usize, ), + indexed: false, }, ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned("CannotWithdrawFrozen"), + ::std::borrow::ToOwned::to_owned("log_named_decimal_int"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { + ::ethers::core::abi::ethabi::Event { name: ::std::borrow::ToOwned::to_owned( - "CannotWithdrawFrozen", + "log_named_decimal_int", ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("CannotWithdrawZero"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("CannotWithdrawZero"), - inputs: ::std::vec![], + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("decimals"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned("CheckpointAheadOfCurrentEpoch"), + ::std::borrow::ToOwned::to_owned("log_named_decimal_uint"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { + ::ethers::core::abi::ethabi::Event { name: ::std::borrow::ToOwned::to_owned( - "CheckpointAheadOfCurrentEpoch", + "log_named_decimal_uint", ), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("checkpoint"), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), + indexed: false, }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("currentEpoch"), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("decimals"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), + indexed: false, }, ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned( - "CouldNotMapNodeAddressToStakerAddress", - ), + ::std::borrow::ToOwned::to_owned("log_named_int"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CouldNotMapNodeAddressToStakerAddress", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_int"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("nodeAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + indexed: false, }, ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned("ERC721ReceiverRejectedTokens"), + ::std::borrow::ToOwned::to_owned("log_named_string"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "ERC721ReceiverRejectedTokens", - ), - inputs: ::std::vec![], + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_string"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned( - "ERC721TransferToNonERC721ReceiverImplementer", - ), + ::std::borrow::ToOwned::to_owned("log_named_uint"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "ERC721TransferToNonERC721ReceiverImplementer", - ), - inputs: ::std::vec![], + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_uint"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned("IncorrectFacetCutAction"), + ::std::borrow::ToOwned::to_owned("log_string"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "IncorrectFacetCutAction", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_string"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_action"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint8"), - ), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, }, ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned("InitializationFunctionReverted"), + ::std::borrow::ToOwned::to_owned("log_uint"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "InitializationFunctionReverted", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_uint"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "_initializationContractAddress", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_calldata"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, ), + indexed: false, }, ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned("InsufficientSelfStake"), + ::std::borrow::ToOwned::to_owned("logs"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "InsufficientSelfStake", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("logs"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakerAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, }, ], + anonymous: false, }, ], ), + ] + ) + } + + + +#[allow(deprecated)] + fn __abi_errors() -> std::collections::BTreeMap> { + let mut abi_errors = __abi_errors_1(); +abi_errors.append(&mut __abi_errors_2()); + + std::collections::BTreeMap::from( + abi_errors + ) + } + + #[allow(deprecated)] + fn __abi_errors_1() -> std::collections::BTreeMap> { + + std::collections::BTreeMap::from( + [ ( - ::std::borrow::ToOwned::to_owned("InvalidAttestedAddress"), + ::std::borrow::ToOwned::to_owned("ActiveValidatorsCannotLeave"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "InvalidAttestedAddress", + "ActiveValidatorsCannotLeave", ), inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("InvalidNewSharePrice"), + ::std::borrow::ToOwned::to_owned("CallerNotContract"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "InvalidNewSharePrice", - ), + name: ::std::borrow::ToOwned::to_owned("CallerNotContract"), inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("InvalidRatio"), + ::std::borrow::ToOwned::to_owned("CallerNotOwner"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidRatio"), + name: ::std::borrow::ToOwned::to_owned("CallerNotOwner"), inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("InvalidSlashPercentage"), + ::std::borrow::ToOwned::to_owned("CallerNotOwnerOrDevopsAdmin"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "InvalidSlashPercentage", + "CallerNotOwnerOrDevopsAdmin", ), inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("InvalidTimeLock"), + ::std::borrow::ToOwned::to_owned( + "CannotAddFunctionToDiamondThatAlreadyExists", + ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidTimeLock"), - inputs: ::std::vec![], + name: ::std::borrow::ToOwned::to_owned( + "CannotAddFunctionToDiamondThatAlreadyExists", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_selector"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( + 4usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes4"), + ), + }, + ], }, ], ), ( - ::std::borrow::ToOwned::to_owned("MinTimeLockNotMet"), + ::std::borrow::ToOwned::to_owned("CannotAddSelectorsToZeroAddress"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("MinTimeLockNotMet"), + name: ::std::borrow::ToOwned::to_owned( + "CannotAddSelectorsToZeroAddress", + ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("timeLock"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("minTimeLock"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + name: ::std::borrow::ToOwned::to_owned("_selectors"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize), + ), ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned("bytes4[]"), ), }, ], @@ -8610,88 +9513,65 @@ abi_errors.append(&mut __abi_errors_2()); ), ( ::std::borrow::ToOwned::to_owned( - "MustBeInActiveOrUnlockedOrPausedState", + "CannotKickBelowCurrentValidatorThreshold", ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "MustBeInActiveOrUnlockedOrPausedState", + "CannotKickBelowCurrentValidatorThreshold", ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("state"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "enum LibStakingStorage.States", - ), - ), - }, - ], + inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("MustBeInActiveOrUnlockedState"), + ::std::borrow::ToOwned::to_owned("CannotMigrateFromValidator"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "MustBeInActiveOrUnlockedState", + "CannotMigrateFromValidator", ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("state"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "enum LibStakingStorage.States", - ), - ), - }, - ], + inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned( - "MustBeInNextValidatorSetLockedOrReadyForNextEpochOrRestoreState", - ), + ::std::borrow::ToOwned::to_owned("CannotModifyUnfrozen"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "MustBeInNextValidatorSetLockedOrReadyForNextEpochOrRestoreState", + "CannotModifyUnfrozen", ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("state"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "enum LibStakingStorage.States", - ), - ), - }, - ], + inputs: ::std::vec![], }, ], ), ( ::std::borrow::ToOwned::to_owned( - "MustBeInNextValidatorSetLockedOrReadyForNextEpochState", + "CannotMoveToLockedValidatorStateBeforeEpochEnds", ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "MustBeInNextValidatorSetLockedOrReadyForNextEpochState", + "CannotMoveToLockedValidatorStateBeforeEpochEnds", + ), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("CannotRejoinBecauseBanned"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "CannotRejoinBecauseBanned", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("state"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + name: ::std::borrow::ToOwned::to_owned("stakingAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "enum LibStakingStorage.States", - ), + ::std::borrow::ToOwned::to_owned("address"), ), }, ], @@ -8700,21 +9580,19 @@ abi_errors.append(&mut __abi_errors_2()); ), ( ::std::borrow::ToOwned::to_owned( - "MustBeInNextValidatorSetLockedState", + "CannotRejoinUntilNextEpochBecauseKicked", ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "MustBeInNextValidatorSetLockedState", + "CannotRejoinUntilNextEpochBecauseKicked", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("state"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + name: ::std::borrow::ToOwned::to_owned("stakingAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "enum LibStakingStorage.States", - ), + ::std::borrow::ToOwned::to_owned("address"), ), }, ], @@ -8722,20 +9600,22 @@ abi_errors.append(&mut __abi_errors_2()); ], ), ( - ::std::borrow::ToOwned::to_owned("MustBeInReadyForNextEpochState"), + ::std::borrow::ToOwned::to_owned( + "CannotRemoveFunctionThatDoesNotExist", + ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "MustBeInReadyForNextEpochState", + "CannotRemoveFunctionThatDoesNotExist", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("state"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + name: ::std::borrow::ToOwned::to_owned("_selector"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( + 4usize, + ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "enum LibStakingStorage.States", - ), + ::std::borrow::ToOwned::to_owned("bytes4"), ), }, ], @@ -8743,18 +9623,20 @@ abi_errors.append(&mut __abi_errors_2()); ], ), ( - ::std::borrow::ToOwned::to_owned("MustBeValidatorInNextEpochToKick"), + ::std::borrow::ToOwned::to_owned("CannotRemoveImmutableFunction"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "MustBeValidatorInNextEpochToKick", + "CannotRemoveImmutableFunction", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakerAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("_selector"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( + 4usize, + ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("bytes4"), ), }, ], @@ -8763,67 +9645,69 @@ abi_errors.append(&mut __abi_errors_2()); ), ( ::std::borrow::ToOwned::to_owned( - "NewTimeLockMustBeGreaterThanCurrent", + "CannotReplaceFunctionThatDoesNotExists", ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "NewTimeLockMustBeGreaterThanCurrent", + "CannotReplaceFunctionThatDoesNotExists", ), - inputs: ::std::vec![], + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_selector"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( + 4usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes4"), + ), + }, + ], }, ], ), ( - ::std::borrow::ToOwned::to_owned("NoBytecodeAtAddress"), + ::std::borrow::ToOwned::to_owned( + "CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet", + ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "NoBytecodeAtAddress", + "CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_contractAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + name: ::std::borrow::ToOwned::to_owned("_selector"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( + 4usize, ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_message"), - kind: ::ethers::core::abi::ethabi::ParamType::String, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), + ::std::borrow::ToOwned::to_owned("bytes4"), ), }, ], }, ], ), - ( - ::std::borrow::ToOwned::to_owned("NoEmptyStakingSlot"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("NoEmptyStakingSlot"), - inputs: ::std::vec![], - }, - ], - ), ( ::std::borrow::ToOwned::to_owned( - "NoSelectorsProvidedForFacetForCut", + "CannotReplaceFunctionsFromFacetWithZeroAddress", ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "NoSelectorsProvidedForFacetForCut", + "CannotReplaceFunctionsFromFacetWithZeroAddress", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_facetAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("_selectors"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize), + ), + ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("bytes4[]"), ), }, ], @@ -8831,81 +9715,36 @@ abi_errors.append(&mut __abi_errors_2()); ], ), ( - ::std::borrow::ToOwned::to_owned("NodeAddressNotFoundForStaker"), + ::std::borrow::ToOwned::to_owned("CannotReplaceImmutableFunction"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "NodeAddressNotFoundForStaker", + "CannotReplaceImmutableFunction", ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("NotApprovedOrOwner"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("NotApprovedOrOwner"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("NotContractOwner"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("NotContractOwner"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_user"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + name: ::std::borrow::ToOwned::to_owned("_selector"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( + 4usize, ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_contractOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("bytes4"), ), }, ], }, ], - ) - ] - ) - } - - - -#[allow(deprecated)] - fn __abi_errors_2() -> std::collections::BTreeMap> { - - std::collections::BTreeMap::from( - [ - ( - ::std::borrow::ToOwned::to_owned( - "NotEnoughTimeElapsedForTimeoutSinceLastEpoch", - ), + ), + ( + ::std::borrow::ToOwned::to_owned("CannotReuseCommsKeys"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "NotEnoughTimeElapsedForTimeoutSinceLastEpoch", + "CannotReuseCommsKeys", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("currentTimestamp"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("epochEndTime"), + name: ::std::borrow::ToOwned::to_owned("senderPubKey"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -8914,7 +9753,7 @@ abi_errors.append(&mut __abi_errors_2()); ), }, ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("timeout"), + name: ::std::borrow::ToOwned::to_owned("receiverPubKey"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -8927,31 +9766,25 @@ abi_errors.append(&mut __abi_errors_2()); ], ), ( - ::std::borrow::ToOwned::to_owned( - "NotEnoughTimeElapsedSinceLastEpoch", - ), + ::std::borrow::ToOwned::to_owned("CannotStakeZero"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "NotEnoughTimeElapsedSinceLastEpoch", - ), + name: ::std::borrow::ToOwned::to_owned("CannotStakeZero"), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("CannotVoteTwice"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("CannotVoteTwice"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("currentTimestamp"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("epochEndTime"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), + name: ::std::borrow::ToOwned::to_owned("stakerAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned("address"), ), }, ], @@ -8959,15 +9792,35 @@ abi_errors.append(&mut __abi_errors_2()); ], ), ( - ::std::borrow::ToOwned::to_owned("NotEnoughValidatorsInNextEpoch"), + ::std::borrow::ToOwned::to_owned("CannotWithdrawFrozen"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "NotEnoughValidatorsInNextEpoch", + "CannotWithdrawFrozen", + ), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("CannotWithdrawZero"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("CannotWithdrawZero"), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("CheckpointAheadOfCurrentEpoch"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "CheckpointAheadOfCurrentEpoch", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("validatorCount"), + name: ::std::borrow::ToOwned::to_owned("checkpoint"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -8976,9 +9829,7 @@ abi_errors.append(&mut __abi_errors_2()); ), }, ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "minimumValidatorCount", - ), + name: ::std::borrow::ToOwned::to_owned("currentEpoch"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -8992,45 +9843,19 @@ abi_errors.append(&mut __abi_errors_2()); ), ( ::std::borrow::ToOwned::to_owned( - "NotEnoughValidatorsReadyForNextEpoch", + "CouldNotMapNodeAddressToStakerAddress", ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "NotEnoughValidatorsReadyForNextEpoch", + "CouldNotMapNodeAddressToStakerAddress", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "currentReadyValidatorCount", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "nextReadyValidatorCount", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "minimumValidatorCountToBeReady", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), + name: ::std::borrow::ToOwned::to_owned("nodeAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned("address"), ), }, ], @@ -9038,46 +9863,42 @@ abi_errors.append(&mut __abi_errors_2()); ], ), ( - ::std::borrow::ToOwned::to_owned("NotOwner"), + ::std::borrow::ToOwned::to_owned("ERC721ReceiverRejectedTokens"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("NotOwner"), + name: ::std::borrow::ToOwned::to_owned( + "ERC721ReceiverRejectedTokens", + ), inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("RealmIdNotFound"), + ::std::borrow::ToOwned::to_owned( + "ERC721TransferToNonERC721ReceiverImplementer", + ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("RealmIdNotFound"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakerAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], + name: ::std::borrow::ToOwned::to_owned( + "ERC721TransferToNonERC721ReceiverImplementer", + ), + inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned( - "RemoveFacetAddressMustBeZeroAddress", - ), + ::std::borrow::ToOwned::to_owned("IncorrectFacetCutAction"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "RemoveFacetAddressMustBeZeroAddress", + "IncorrectFacetCutAction", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_facetAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("_action"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("uint8"), ), }, ], @@ -9085,53 +9906,27 @@ abi_errors.append(&mut __abi_errors_2()); ], ), ( - ::std::borrow::ToOwned::to_owned("RewardsMustBeClaimed"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "RewardsMustBeClaimed", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("SameAddress"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("SameAddress"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("SignaledReadyForWrongEpochNumber"), + ::std::borrow::ToOwned::to_owned("InitializationFunctionReverted"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "SignaledReadyForWrongEpochNumber", + "InitializationFunctionReverted", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { name: ::std::borrow::ToOwned::to_owned( - "currentEpochNumber", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + "_initializationContractAddress", ), + kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned("address"), ), }, ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "receivedEpochNumber", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), + name: ::std::borrow::ToOwned::to_owned("_calldata"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned("bytes"), ), }, ], @@ -9139,189 +9934,83 @@ abi_errors.append(&mut __abi_errors_2()); ], ), ( - ::std::borrow::ToOwned::to_owned("SlashingMustOccurInSameRealm"), + ::std::borrow::ToOwned::to_owned("InsufficientSelfStake"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "SlashingMustOccurInSameRealm", + "InsufficientSelfStake", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("slahedAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("slashedRealmId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("senderAddress"), + name: ::std::borrow::ToOwned::to_owned("stakerAddress"), kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( ::std::borrow::ToOwned::to_owned("address"), ), }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("senderRealmId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("StakeAmountNotMet"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("StakeAmountNotMet"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, ], }, ], ), ( - ::std::borrow::ToOwned::to_owned( - "StakeMustBeGreaterThanMinimumStake", - ), + ::std::borrow::ToOwned::to_owned("InvalidAttestedAddress"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "StakeMustBeGreaterThanMinimumStake", + "InvalidAttestedAddress", ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakerAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakedAmount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("minimumStake"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], + inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("StakeRecordNotFound"), + ::std::borrow::ToOwned::to_owned("InvalidNewSharePrice"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "StakeRecordNotFound", + "InvalidNewSharePrice", ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakeRecordId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], + inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("StakerAddressMismatch"), + ::std::borrow::ToOwned::to_owned("InvalidRatio"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "StakerAddressMismatch", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("senderAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("operatorAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakerAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], + name: ::std::borrow::ToOwned::to_owned("InvalidRatio"), + inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("TimeLockNotMet"), + ::std::borrow::ToOwned::to_owned("InvalidSlashPercentage"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("TimeLockNotMet"), + name: ::std::borrow::ToOwned::to_owned( + "InvalidSlashPercentage", + ), inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("TooSoonToWithdraw"), + ::std::borrow::ToOwned::to_owned("InvalidTimeLock"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("TooSoonToWithdraw"), + name: ::std::borrow::ToOwned::to_owned("InvalidTimeLock"), inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("TryingToWithdrawMoreThanStaked"), + ::std::borrow::ToOwned::to_owned("MinTimeLockNotMet"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "TryingToWithdrawMoreThanStaked", - ), + name: ::std::borrow::ToOwned::to_owned("MinTimeLockNotMet"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("yourBalance"), + name: ::std::borrow::ToOwned::to_owned("timeLock"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -9330,9 +10019,7 @@ abi_errors.append(&mut __abi_errors_2()); ), }, ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "requestedWithdrawlAmount", - ), + name: ::std::borrow::ToOwned::to_owned("minTimeLock"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -9346,19 +10033,21 @@ abi_errors.append(&mut __abi_errors_2()); ), ( ::std::borrow::ToOwned::to_owned( - "ValidatorAlreadyInNextValidatorSet", + "MustBeInActiveOrUnlockedOrPausedState", ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "ValidatorAlreadyInNextValidatorSet", + "MustBeInActiveOrUnlockedOrPausedState", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("staker"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("state"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned( + "enum LibStakingStorage.States", + ), ), }, ], @@ -9366,27 +10055,43 @@ abi_errors.append(&mut __abi_errors_2()); ], ), ( - ::std::borrow::ToOwned::to_owned("ValidatorAlreadyInRealm"), + ::std::borrow::ToOwned::to_owned("MustBeInActiveOrUnlockedState"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "ValidatorAlreadyInRealm", + "MustBeInActiveOrUnlockedState", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("staker"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("state"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned( + "enum LibStakingStorage.States", + ), ), }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned( + "MustBeInNextValidatorSetLockedOrReadyForNextEpochOrRestoreState", + ), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "MustBeInNextValidatorSetLockedOrReadyForNextEpochOrRestoreState", + ), + inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("existingRealmId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), + name: ::std::borrow::ToOwned::to_owned("state"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned( + "enum LibStakingStorage.States", + ), ), }, ], @@ -9394,31 +10099,66 @@ abi_errors.append(&mut __abi_errors_2()); ], ), ( - ::std::borrow::ToOwned::to_owned("ValidatorIsNotInNextEpoch"), + ::std::borrow::ToOwned::to_owned( + "MustBeInNextValidatorSetLockedOrReadyForNextEpochState", + ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "ValidatorIsNotInNextEpoch", + "MustBeInNextValidatorSetLockedOrReadyForNextEpochState", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("validator"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("state"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned( + "enum LibStakingStorage.States", + ), ), }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned( + "MustBeInNextValidatorSetLockedState", + ), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "MustBeInNextValidatorSetLockedState", + ), + inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "validatorsInNextEpoch", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("state"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "enum LibStakingStorage.States", ), ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("MustBeInReadyForNextEpochState"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "MustBeInReadyForNextEpochState", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("state"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address[]"), + ::std::borrow::ToOwned::to_owned( + "enum LibStakingStorage.States", + ), ), }, ], @@ -9426,15 +10166,15 @@ abi_errors.append(&mut __abi_errors_2()); ], ), ( - ::std::borrow::ToOwned::to_owned("ValidatorNotInNextEpoch"), + ::std::borrow::ToOwned::to_owned("MustBeValidatorInNextEpochToKick"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "ValidatorNotInNextEpoch", + "MustBeValidatorInNextEpochToKick", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("staker"), + name: ::std::borrow::ToOwned::to_owned("stakerAddress"), kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( ::std::borrow::ToOwned::to_owned("address"), @@ -9445,27 +10185,79 @@ abi_errors.append(&mut __abi_errors_2()); ], ), ( - ::std::borrow::ToOwned::to_owned("ValidatorNotPermitted"), + ::std::borrow::ToOwned::to_owned( + "NewTimeLockMustBeGreaterThanCurrent", + ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "ValidatorNotPermitted", + "NewTimeLockMustBeGreaterThanCurrent", + ), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("NoBytecodeAtAddress"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "NoBytecodeAtAddress", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("validatorAddress"), + name: ::std::borrow::ToOwned::to_owned("_contractAddress"), kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( ::std::borrow::ToOwned::to_owned("address"), ), }, ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("realmId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + name: ::std::borrow::ToOwned::to_owned("_message"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("NoEmptyStakeRecordSlots"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "NoEmptyStakeRecordSlots", + ), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("NoEmptyStakingSlot"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NoEmptyStakingSlot"), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned( + "NoSelectorsProvidedForFacetForCut", + ), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "NoSelectorsProvidedForFacetForCut", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_facetAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned("address"), ), }, ], @@ -9473,15 +10265,51 @@ abi_errors.append(&mut __abi_errors_2()); ], ), ( - ::std::borrow::ToOwned::to_owned("ValidatorNotRegistered"), + ::std::borrow::ToOwned::to_owned("NodeAddressNotFoundForStaker"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "ValidatorNotRegistered", + "NodeAddressNotFoundForStaker", ), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("NotApprovedOrOwner"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NotApprovedOrOwner"), + inputs: ::std::vec![], + }, + ], + ) + ] + ) + } + + + +#[allow(deprecated)] + fn __abi_errors_2() -> std::collections::BTreeMap> { + + std::collections::BTreeMap::from( + [ + ( + ::std::borrow::ToOwned::to_owned("NotContractOwner"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NotContractOwner"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("validatorAddress"), + name: ::std::borrow::ToOwned::to_owned("_user"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_contractOwner"), kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( ::std::borrow::ToOwned::to_owned("address"), @@ -9493,28 +10321,71 @@ abi_errors.append(&mut __abi_errors_2()); ), ( ::std::borrow::ToOwned::to_owned( - "ValidatorRegisterAttestedWalletDisabled", + "NotEnoughTimeElapsedForTimeoutSinceLastEpoch", ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "ValidatorRegisterAttestedWalletDisabled", + "NotEnoughTimeElapsedForTimeoutSinceLastEpoch", ), - inputs: ::std::vec![], + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("currentTimestamp"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("epochEndTime"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("timeout"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], }, ], ), ( - ::std::borrow::ToOwned::to_owned("ValueMustBeNonzero"), + ::std::borrow::ToOwned::to_owned( + "NotEnoughTimeElapsedSinceLastEpoch", + ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("ValueMustBeNonzero"), + name: ::std::borrow::ToOwned::to_owned( + "NotEnoughTimeElapsedSinceLastEpoch", + ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("valueName"), - kind: ::ethers::core::abi::ethabi::ParamType::String, + name: ::std::borrow::ToOwned::to_owned("currentTimestamp"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("epochEndTime"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), ), }, ], @@ -9522,19 +10393,582 @@ abi_errors.append(&mut __abi_errors_2()); ], ), ( - ::std::borrow::ToOwned::to_owned("ZeroAddress"), + ::std::borrow::ToOwned::to_owned("NotEnoughValidatorsInNextEpoch"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("ZeroAddress"), - inputs: ::std::vec![], + name: ::std::borrow::ToOwned::to_owned( + "NotEnoughValidatorsInNextEpoch", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("validatorCount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "minimumValidatorCount", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], }, ], ), - ] - ) - } - - + ( + ::std::borrow::ToOwned::to_owned( + "NotEnoughValidatorsReadyForNextEpoch", + ), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "NotEnoughValidatorsReadyForNextEpoch", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "currentReadyValidatorCount", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "nextReadyValidatorCount", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "minimumValidatorCountToBeReady", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("NotOwner"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NotOwner"), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("RealmIdNotFound"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("RealmIdNotFound"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakerAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned( + "RemoveFacetAddressMustBeZeroAddress", + ), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "RemoveFacetAddressMustBeZeroAddress", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_facetAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("RewardsMustBeClaimed"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "RewardsMustBeClaimed", + ), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("SameAddress"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("SameAddress"), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("SignaledReadyForWrongEpochNumber"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "SignaledReadyForWrongEpochNumber", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "currentEpochNumber", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "receivedEpochNumber", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("SlashingMustOccurInSameRealm"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "SlashingMustOccurInSameRealm", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("slahedAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("slashedRealmId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("senderAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("senderRealmId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("StakeAmountNotMet"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("StakeAmountNotMet"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned( + "StakeMustBeGreaterThanMinimumStake", + ), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "StakeMustBeGreaterThanMinimumStake", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakerAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakedAmount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("minimumStake"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("StakeRecordNotFound"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "StakeRecordNotFound", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakeRecordId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("StakerAddressMismatch"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "StakerAddressMismatch", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("senderAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("operatorAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakerAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("TimeLockNotMet"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("TimeLockNotMet"), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("TooSoonToWithdraw"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("TooSoonToWithdraw"), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("TryingToWithdrawMoreThanStaked"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "TryingToWithdrawMoreThanStaked", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("yourBalance"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "requestedWithdrawlAmount", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned( + "ValidatorAlreadyInNextValidatorSet", + ), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "ValidatorAlreadyInNextValidatorSet", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("staker"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ValidatorAlreadyInRealm"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "ValidatorAlreadyInRealm", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("staker"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("existingRealmId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ValidatorIsNotInNextEpoch"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "ValidatorIsNotInNextEpoch", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("validator"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "validatorsInNextEpoch", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address[]"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ValidatorNotInNextEpoch"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "ValidatorNotInNextEpoch", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("staker"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ValidatorNotPermitted"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "ValidatorNotPermitted", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("validatorAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("realmId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ValidatorNotRegistered"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "ValidatorNotRegistered", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("validatorAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned( + "ValidatorRegisterAttestedWalletDisabled", + ), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "ValidatorRegisterAttestedWalletDisabled", + ), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ValueMustBeNonzero"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("ValueMustBeNonzero"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("valueName"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ZeroAddress"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("ZeroAddress"), + inputs: ::std::vec![], + }, + ], + ), + ] + ) + } + + #[allow(deprecated)] fn __abi() -> ::ethers::core::abi::Abi { @@ -9591,6 +11025,86 @@ abi_errors.append(&mut __abi_errors_2()); ), ) } + ///Calls the contract's `IS_TEST` (0xfa7626d4) function + pub fn is_test(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([250, 118, 38, 212], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `_generateAddresses` (0x678ac78a) function + pub fn generate_addresses( + &self, + num_addresses: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::ethers::core::types::Address>, + > { + self.0 + .method_hash([103, 138, 199, 138], num_addresses) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `_generateAddressesWithOffset` (0xa5187b2b) function + pub fn generate_addresses_with_offset( + &self, + num_addresses: ::ethers::core::types::U256, + offset: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::ethers::core::types::Address>, + > { + self.0 + .method_hash([165, 24, 123, 43], (num_addresses, offset)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `_generatePubKeys` (0xfed0a77b) function + pub fn generate_pub_keys( + &self, + stakers: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::ethers::core::types::Bytes>, + > { + self.0 + .method_hash([254, 208, 167, 123], stakers) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `_generateUint256s` (0xae517f4d) function + pub fn generate_uint_25_6s( + &self, + num_uint_25_6s: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::ethers::core::types::U256>, + > { + self.0 + .method_hash([174, 81, 127, 77], num_uint_25_6s) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `_generateUint256sWithOffset` (0xfb9d55b8) function + pub fn generate_uint_25_6s_with_offset( + &self, + num_uint_25_6s: ::ethers::core::types::U256, + offset: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::ethers::core::types::U256>, + > { + self.0 + .method_hash([251, 157, 85, 184], (num_uint_25_6s, offset)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `_generateValidators` (0xc5344d40) function + pub fn generate_validators( + &self, + num_validators: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec, + > { + self.0 + .method_hash([197, 52, 77, 64], num_validators) + .expect("method not found (this should never happen)") + } ///Calls the contract's `addRealm` (0x472a7d89) function pub fn add_realm( &self, @@ -9929,6 +11443,50 @@ abi_errors.append(&mut __abi_errors_2()); .method_hash([84, 135, 197, 119], realm_id) .expect("method not found (this should never happen)") } + ///Calls the contract's `excludeArtifacts` (0xb5508aa9) function + pub fn exclude_artifacts( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::std::string::String>, + > { + self.0 + .method_hash([181, 80, 138, 169], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `excludeContracts` (0xe20c9f71) function + pub fn exclude_contracts( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::ethers::core::types::Address>, + > { + self.0 + .method_hash([226, 12, 159, 113], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `excludeSelectors` (0xb0464fdc) function + pub fn exclude_selectors( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec, + > { + self.0 + .method_hash([176, 70, 79, 220], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `excludeSenders` (0x1ed7831c) function + pub fn exclude_senders( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::ethers::core::types::Address>, + > { + self.0 + .method_hash([30, 215, 131, 28], ()) + .expect("method not found (this should never happen)") + } ///Calls the contract's `exit` (0xe9fad8ee) function pub fn exit(&self) -> ::ethers::contract::builders::ContractCall { self.0 @@ -9975,6 +11533,12 @@ abi_errors.append(&mut __abi_errors_2()); .method_hash([122, 14, 214, 39], ()) .expect("method not found (this should never happen)") } + ///Calls the contract's `failed` (0xba414fa6) function + pub fn failed(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([186, 65, 79, 166], ()) + .expect("method not found (this should never happen)") + } ///Calls the contract's `getActiveUnkickedValidatorCount` (0x7a808c0d) function pub fn get_active_unkicked_validator_count( &self, @@ -10240,6 +11804,19 @@ abi_errors.append(&mut __abi_errors_2()); .method_hash([217, 187, 210, 120], ()) .expect("method not found (this should never happen)") } + ///Calls the contract's `getMostRecentStakeRecord` (0x7d0f412f) function + pub fn get_most_recent_stake_record( + &self, + user_staker_address: ::ethers::core::types::Address, + operator_staker_address: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [125, 15, 65, 47], + (user_staker_address, operator_staker_address), + ) + .expect("method not found (this should never happen)") + } ///Calls the contract's `getNodeAttestedPubKeyMappings` (0x88790aee) function pub fn get_node_attested_pub_key_mappings( &self, @@ -11162,6 +12739,15 @@ abi_errors.append(&mut __abi_errors_2()); .method_hash([184, 141, 79, 222], (from, to, token_id, data)) .expect("method not found (this should never happen)") } + ///Calls the contract's `selfStakeBalanceOf` (0xeddf837a) function + pub fn self_stake_balance_of( + &self, + staker_address: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([237, 223, 131, 122], staker_address) + .expect("method not found (this should never happen)") + } ///Calls the contract's `setApprovalForAll` (0xa22cb465) function pub fn set_approval_for_all( &self, @@ -11366,6 +12952,12 @@ abi_errors.append(&mut __abi_errors_2()); .method_hash([218, 116, 34, 40], forwarder) .expect("method not found (this should never happen)") } + ///Calls the contract's `setUp` (0x0a9254e4) function + pub fn set_up(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([10, 146, 84, 228], ()) + .expect("method not found (this should never happen)") + } ///Calls the contract's `setValidatorCommissionRate` (0x7149ab58) function pub fn set_validator_commission_rate( &self, @@ -11378,88 +12970,246 @@ abi_errors.append(&mut __abi_errors_2()); ///Calls the contract's `shouldKickValidator` (0x1e966b97) function pub fn should_kick_validator( &self, - realm_id: ::ethers::core::types::U256, - staker_address: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { + realm_id: ::ethers::core::types::U256, + staker_address: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([30, 150, 107, 151], (realm_id, staker_address)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `signalReadyForNextEpoch` (0x9a25bdee) function + pub fn signal_ready_for_next_epoch( + &self, + realm_id: ::ethers::core::types::U256, + epoch_number: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([154, 37, 189, 238], (realm_id, epoch_number)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `splitStakeRecord` (0xf69ccb92) function + pub fn split_stake_record( + &self, + staker_address: ::ethers::core::types::Address, + stake_record_id: ::ethers::core::types::U256, + ratio: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [246, 156, 203, 146], + (staker_address, stake_record_id, ratio), + ) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `stake` (0x7628a37d) function + pub fn stake( + &self, + amount: ::ethers::core::types::U256, + time_lock: ::ethers::core::types::U256, + operator_staker_address: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [118, 40, 163, 125], + (amount, time_lock, operator_staker_address), + ) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `stakerToValidatorsTheyStakedTo` (0x6817d36e) function + pub fn staker_to_validators_they_staked_to( + &self, + staker: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::ethers::core::types::Address>, + > { + self.0 + .method_hash([104, 23, 211, 110], staker) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `state` (0x3e4f49e6) function + pub fn state( + &self, + realm_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([62, 79, 73, 230], realm_id) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `supportsInterface` (0x01ffc9a7) function + pub fn supports_interface( + &self, + interface_id: [u8; 4], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([1, 255, 201, 167], interface_id) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `targetArtifactSelectors` (0x66d9a9a0) function + pub fn target_artifact_selectors( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec, + > { + self.0 + .method_hash([102, 217, 169, 160], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `targetArtifacts` (0x85226c81) function + pub fn target_artifacts( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::std::string::String>, + > { + self.0 + .method_hash([133, 34, 108, 129], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `targetContracts` (0x3f7286f4) function + pub fn target_contracts( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::ethers::core::types::Address>, + > { + self.0 + .method_hash([63, 114, 134, 244], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `targetInterfaces` (0x2ade3880) function + pub fn target_interfaces( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec, + > { + self.0 + .method_hash([42, 222, 56, 128], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `targetSelectors` (0x916a17c6) function + pub fn target_selectors( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec, + > { + self.0 + .method_hash([145, 106, 23, 198], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `targetSenders` (0x3e5e3c23) function + pub fn target_senders( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::ethers::core::types::Address>, + > { + self.0 + .method_hash([62, 94, 60, 35], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `test_Stake` (0xdbab1cd7) function + pub fn test_stake(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([219, 171, 28, 215], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `test_StakeAndTransfer` (0xaaedca62) function + pub fn test_stake_and_transfer( + &self, + is_safe_transfer: bool, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([170, 237, 202, 98], is_safe_transfer) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `test_StakeAndTransfer_ClaimRewards` (0x96007d44) function + pub fn test_stake_and_transfer_claim_rewards( + &self, + is_safe_transfer: bool, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([150, 0, 125, 68], is_safe_transfer) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `test_StakeAndTransfer_ReceiverMutatesStakeRecord` (0x6239b4f7) function + pub fn test_stake_and_transfer_receiver_mutates_stake_record( + &self, + is_safe_transfer: bool, + operation: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([30, 150, 107, 151], (realm_id, staker_address)) + .method_hash([98, 57, 180, 247], (is_safe_transfer, operation)) .expect("method not found (this should never happen)") } - ///Calls the contract's `signalReadyForNextEpoch` (0x9a25bdee) function - pub fn signal_ready_for_next_epoch( + ///Calls the contract's `test_StakeAndTransfer_RevertNotOwner` (0x5ad8b9a9) function + pub fn test_stake_and_transfer_revert_not_owner( &self, - realm_id: ::ethers::core::types::U256, - epoch_number: ::ethers::core::types::U256, + is_safe_transfer: bool, ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([154, 37, 189, 238], (realm_id, epoch_number)) + .method_hash([90, 216, 185, 169], is_safe_transfer) .expect("method not found (this should never happen)") } - ///Calls the contract's `splitStakeRecord` (0xf69ccb92) function - pub fn split_stake_record( + ///Calls the contract's `test_StakeAndTransfer_TokenOwnerByIndex` (0xa7319b44) function + pub fn test_stake_and_transfer_token_owner_by_index( &self, - staker_address: ::ethers::core::types::Address, - stake_record_id: ::ethers::core::types::U256, - ratio: ::ethers::core::types::U256, + is_safe_transfer: bool, ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash( - [246, 156, 203, 146], - (staker_address, stake_record_id, ratio), - ) + .method_hash([167, 49, 155, 68], is_safe_transfer) .expect("method not found (this should never happen)") } - ///Calls the contract's `stake` (0x7628a37d) function - pub fn stake( + ///Calls the contract's `test_StakeAndTransfer_Withdraw` (0x86ef1d4d) function + pub fn test_stake_and_transfer_withdraw( &self, - amount: ::ethers::core::types::U256, - time_lock: ::ethers::core::types::U256, - operator_staker_address: ::ethers::core::types::Address, + is_safe_transfer: bool, + is_unfreeze_before_transfer: bool, ) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash( - [118, 40, 163, 125], - (amount, time_lock, operator_staker_address), + [134, 239, 29, 77], + (is_safe_transfer, is_unfreeze_before_transfer), ) .expect("method not found (this should never happen)") } - ///Calls the contract's `stakeBalanceOf` (0xaf46aa08) function - pub fn stake_balance_of( + ///Calls the contract's `test_StakeApproveAndTransfer` (0x22e7a7ac) function + pub fn test_stake_approve_and_transfer( &self, - staker_address: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { + is_safe_transfer: bool, + ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([175, 70, 170, 8], staker_address) + .method_hash([34, 231, 167, 172], is_safe_transfer) .expect("method not found (this should never happen)") } - ///Calls the contract's `stakerToValidatorsTheyStakedTo` (0x6817d36e) function - pub fn staker_to_validators_they_staked_to( + ///Calls the contract's `test_StakeApproveForAllAndTransfer` (0x78854e37) function + pub fn test_stake_approve_for_all_and_transfer( &self, - staker: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::std::vec::Vec<::ethers::core::types::Address>, - > { + is_safe_transfer: bool, + ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([104, 23, 211, 110], staker) + .method_hash([120, 133, 78, 55], is_safe_transfer) .expect("method not found (this should never happen)") } - ///Calls the contract's `state` (0x3e4f49e6) function - pub fn state( + ///Calls the contract's `test_StakeMax_TransferShouldFail` (0xb29fabc7) function + pub fn test_stake_max_transfer_should_fail( &self, - realm_id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { + is_safe_transfer: bool, + ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([62, 79, 73, 230], realm_id) + .method_hash([178, 159, 171, 199], is_safe_transfer) .expect("method not found (this should never happen)") } - ///Calls the contract's `supportsInterface` (0x01ffc9a7) function - pub fn supports_interface( + ///Calls the contract's `test_Stake_MutateStakeRecord` (0xa90bb850) function + pub fn test_stake_mutate_stake_record( &self, - interface_id: [u8; 4], - ) -> ::ethers::contract::builders::ContractCall { + operation: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([1, 255, 201, 167], interface_id) + .method_hash([169, 11, 184, 80], operation) .expect("method not found (this should never happen)") } ///Calls the contract's `tokenOfOwnerByIndex` (0x2f745c59) function @@ -11703,304 +13453,528 @@ abi_errors.append(&mut __abi_errors_2()); ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - EpochLengthSetFilter, + EpochLengthSetFilter, + > { + self.0.event() + } + ///Gets the contract's `EpochTimeoutSet` event + pub fn epoch_timeout_set_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + EpochTimeoutSetFilter, + > { + self.0.event() + } + ///Gets the contract's `FixedCostRewardsClaimed` event + pub fn fixed_cost_rewards_claimed_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + FixedCostRewardsClaimedFilter, + > { + self.0.event() + } + ///Gets the contract's `KeySetConfigSet` event + pub fn key_set_config_set_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + KeySetConfigSetFilter, + > { + self.0.event() + } + ///Gets the contract's `KeySetConfigUpdated` event + pub fn key_set_config_updated_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + KeySetConfigUpdatedFilter, + > { + self.0.event() + } + ///Gets the contract's `KickPenaltyPercentSet` event + pub fn kick_penalty_percent_set_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + KickPenaltyPercentSetFilter, + > { + self.0.event() + } + ///Gets the contract's `OwnershipTransferred` event + pub fn ownership_transferred_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + OwnershipTransferredFilter, + > { + self.0.event() + } + ///Gets the contract's `ReadyForNextEpoch` event + pub fn ready_for_next_epoch_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + ReadyForNextEpochFilter, + > { + self.0.event() + } + ///Gets the contract's `Recovered` event + pub fn recovered_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + RecoveredFilter, + > { + self.0.event() + } + ///Gets the contract's `RequestToJoin` event + pub fn request_to_join_1_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + RequestToJoin1Filter, + > { + self.0.event() + } + ///Gets the contract's `RequestToJoin` event + pub fn request_to_join_2_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + RequestToJoin2Filter, + > { + self.0.event() + } + ///Gets the contract's `RequestToLeave` event + pub fn request_to_leave_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + RequestToLeaveFilter, + > { + self.0.event() + } + ///Gets the contract's `ResolverContractAddressSet` event + pub fn resolver_contract_address_set_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + ResolverContractAddressSetFilter, + > { + self.0.event() + } + ///Gets the contract's `RewardsDurationUpdated` event + pub fn rewards_duration_updated_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + RewardsDurationUpdatedFilter, + > { + self.0.event() + } + ///Gets the contract's `StakeRecordCreated` event + pub fn stake_record_created_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + StakeRecordCreatedFilter, + > { + self.0.event() + } + ///Gets the contract's `StakeRecordRemoved` event + pub fn stake_record_removed_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + StakeRecordRemovedFilter, + > { + self.0.event() + } + ///Gets the contract's `StakeRecordUpdated` event + pub fn stake_record_updated_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + StakeRecordUpdatedFilter, + > { + self.0.event() + } + ///Gets the contract's `StakeRewardsClaimed` event + pub fn stake_rewards_claimed_1_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + StakeRewardsClaimed1Filter, + > { + self.0.event() + } + ///Gets the contract's `StakeRewardsClaimed` event + pub fn stake_rewards_claimed_2_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + StakeRewardsClaimed2Filter, + > { + self.0.event() + } + ///Gets the contract's `Staked` event + pub fn staked_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, StakedFilter> { + self.0.event() + } + ///Gets the contract's `StakingTokenSet` event + pub fn staking_token_set_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + StakingTokenSetFilter, + > { + self.0.event() + } + ///Gets the contract's `StateChanged` event + pub fn state_changed_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + StateChangedFilter, + > { + self.0.event() + } + ///Gets the contract's `Transfer` event + pub fn transfer_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + TransferFilter, > { self.0.event() } - ///Gets the contract's `EpochTimeoutSet` event - pub fn epoch_timeout_set_filter( + ///Gets the contract's `TrustedForwarderSet` event + pub fn trusted_forwarder_set_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - EpochTimeoutSetFilter, + TrustedForwarderSetFilter, > { self.0.event() } - ///Gets the contract's `FixedCostRewardsClaimed` event - pub fn fixed_cost_rewards_claimed_filter( + ///Gets the contract's `ValidatorBanned` event + pub fn validator_banned_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - FixedCostRewardsClaimedFilter, + ValidatorBannedFilter, > { self.0.event() } - ///Gets the contract's `KeySetConfigSet` event - pub fn key_set_config_set_filter( + ///Gets the contract's `ValidatorCommissionClaimed` event + pub fn validator_commission_claimed_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - KeySetConfigSetFilter, + ValidatorCommissionClaimedFilter, > { self.0.event() } - ///Gets the contract's `KeySetConfigUpdated` event - pub fn key_set_config_updated_filter( + ///Gets the contract's `ValidatorKickedFromNextEpoch` event + pub fn validator_kicked_from_next_epoch_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - KeySetConfigUpdatedFilter, + ValidatorKickedFromNextEpochFilter, > { self.0.event() } - ///Gets the contract's `KickPenaltyPercentSet` event - pub fn kick_penalty_percent_set_filter( + ///Gets the contract's `ValidatorRegistered` event + pub fn validator_registered_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - KickPenaltyPercentSetFilter, + ValidatorRegisteredFilter, > { self.0.event() } - ///Gets the contract's `OwnershipTransferred` event - pub fn ownership_transferred_filter( + ///Gets the contract's `ValidatorRejoinedNextEpoch` event + pub fn validator_rejoined_next_epoch_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - OwnershipTransferredFilter, + ValidatorRejoinedNextEpochFilter, > { self.0.event() } - ///Gets the contract's `ReadyForNextEpoch` event - pub fn ready_for_next_epoch_filter( + ///Gets the contract's `VersionRequirementsUpdated` event + pub fn version_requirements_updated_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - ReadyForNextEpochFilter, + VersionRequirementsUpdatedFilter, > { self.0.event() } - ///Gets the contract's `Recovered` event - pub fn recovered_filter( + ///Gets the contract's `VoteToAdvanceTimeOutElapsed` event + pub fn vote_to_advance_time_out_elapsed_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - RecoveredFilter, + VoteToAdvanceTimeOutElapsedFilter, > { self.0.event() } - ///Gets the contract's `RequestToJoin` event - pub fn request_to_join_filter( + ///Gets the contract's `VotedToKickValidatorInNextEpoch` event + pub fn voted_to_kick_validator_in_next_epoch_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - RequestToJoinFilter, + VotedToKickValidatorInNextEpochFilter, > { self.0.event() } - ///Gets the contract's `RequestToLeave` event - pub fn request_to_leave_filter( + ///Gets the contract's `Withdrawn` event + pub fn withdrawn_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - RequestToLeaveFilter, + WithdrawnFilter, > { self.0.event() } - ///Gets the contract's `ResolverContractAddressSet` event - pub fn resolver_contract_address_set_filter( + ///Gets the contract's `log` event + pub fn log_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogFilter> { + self.0.event() + } + ///Gets the contract's `log_address` event + pub fn log_address_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - ResolverContractAddressSetFilter, + LogAddressFilter, > { self.0.event() } - ///Gets the contract's `RewardsDurationUpdated` event - pub fn rewards_duration_updated_filter( + ///Gets the contract's `log_array` event + pub fn log_array_1_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - RewardsDurationUpdatedFilter, + LogArray1Filter, > { self.0.event() } - ///Gets the contract's `StakeRecordCreated` event - pub fn stake_record_created_filter( + ///Gets the contract's `log_array` event + pub fn log_array_2_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - StakeRecordCreatedFilter, + LogArray2Filter, > { self.0.event() } - ///Gets the contract's `StakeRecordRemoved` event - pub fn stake_record_removed_filter( + ///Gets the contract's `log_array` event + pub fn log_array_3_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - StakeRecordRemovedFilter, + LogArray3Filter, > { self.0.event() } - ///Gets the contract's `StakeRecordUpdated` event - pub fn stake_record_updated_filter( + ///Gets the contract's `log_bytes` event + pub fn log_bytes_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - StakeRecordUpdatedFilter, + LogBytesFilter, > { self.0.event() } - ///Gets the contract's `StakeRewardsClaimed` event - pub fn stake_rewards_claimed_filter( + ///Gets the contract's `log_bytes32` event + pub fn log_bytes_32_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - StakeRewardsClaimedFilter, + LogBytes32Filter, > { self.0.event() } - ///Gets the contract's `Staked` event - pub fn staked_filter( + ///Gets the contract's `log_int` event + pub fn log_int_filter( &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, StakedFilter> { + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogIntFilter> { self.0.event() } - ///Gets the contract's `StakingTokenSet` event - pub fn staking_token_set_filter( + ///Gets the contract's `log_named_address` event + pub fn log_named_address_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - StakingTokenSetFilter, + LogNamedAddressFilter, > { self.0.event() } - ///Gets the contract's `StateChanged` event - pub fn state_changed_filter( + ///Gets the contract's `log_named_array` event + pub fn log_named_array_1_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - StateChangedFilter, + LogNamedArray1Filter, > { self.0.event() } - ///Gets the contract's `Transfer` event - pub fn transfer_filter( + ///Gets the contract's `log_named_array` event + pub fn log_named_array_2_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - TransferFilter, + LogNamedArray2Filter, > { self.0.event() } - ///Gets the contract's `TrustedForwarderSet` event - pub fn trusted_forwarder_set_filter( + ///Gets the contract's `log_named_array` event + pub fn log_named_array_3_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - TrustedForwarderSetFilter, + LogNamedArray3Filter, > { self.0.event() } - ///Gets the contract's `ValidatorBanned` event - pub fn validator_banned_filter( + ///Gets the contract's `log_named_bytes` event + pub fn log_named_bytes_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - ValidatorBannedFilter, + LogNamedBytesFilter, > { self.0.event() } - ///Gets the contract's `ValidatorCommissionClaimed` event - pub fn validator_commission_claimed_filter( + ///Gets the contract's `log_named_bytes32` event + pub fn log_named_bytes_32_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - ValidatorCommissionClaimedFilter, + LogNamedBytes32Filter, > { self.0.event() } - ///Gets the contract's `ValidatorKickedFromNextEpoch` event - pub fn validator_kicked_from_next_epoch_filter( + ///Gets the contract's `log_named_decimal_int` event + pub fn log_named_decimal_int_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - ValidatorKickedFromNextEpochFilter, + LogNamedDecimalIntFilter, > { self.0.event() } - ///Gets the contract's `ValidatorRegistered` event - pub fn validator_registered_filter( + ///Gets the contract's `log_named_decimal_uint` event + pub fn log_named_decimal_uint_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - ValidatorRegisteredFilter, + LogNamedDecimalUintFilter, > { self.0.event() } - ///Gets the contract's `ValidatorRejoinedNextEpoch` event - pub fn validator_rejoined_next_epoch_filter( + ///Gets the contract's `log_named_int` event + pub fn log_named_int_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - ValidatorRejoinedNextEpochFilter, + LogNamedIntFilter, > { self.0.event() } - ///Gets the contract's `VersionRequirementsUpdated` event - pub fn version_requirements_updated_filter( + ///Gets the contract's `log_named_string` event + pub fn log_named_string_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - VersionRequirementsUpdatedFilter, + LogNamedStringFilter, > { self.0.event() } - ///Gets the contract's `VoteToAdvanceTimeOutElapsed` event - pub fn vote_to_advance_time_out_elapsed_filter( + ///Gets the contract's `log_named_uint` event + pub fn log_named_uint_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - VoteToAdvanceTimeOutElapsedFilter, + LogNamedUintFilter, > { self.0.event() } - ///Gets the contract's `VotedToKickValidatorInNextEpoch` event - pub fn voted_to_kick_validator_in_next_epoch_filter( + ///Gets the contract's `log_string` event + pub fn log_string_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - VotedToKickValidatorInNextEpochFilter, + LogStringFilter, > { self.0.event() } - ///Gets the contract's `Withdrawn` event - pub fn withdrawn_filter( + ///Gets the contract's `log_uint` event + pub fn log_uint_filter( &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - WithdrawnFilter, - > { + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogUintFilter> { + self.0.event() + } + ///Gets the contract's `logs` event + pub fn logs_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogsFilter> { self.0.event() } /// Returns an `Event` builder for all the events of this contract. @@ -12838,6 +14812,21 @@ abi_errors.append(&mut __abi_errors_2()); pub contract_address: ::ethers::core::types::Address, pub message: ::std::string::String, } + ///Custom Error type `NoEmptyStakeRecordSlots` with signature `NoEmptyStakeRecordSlots()` and selector `0x6330eb87` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror(name = "NoEmptyStakeRecordSlots", abi = "NoEmptyStakeRecordSlots()")] + pub struct NoEmptyStakeRecordSlots; ///Custom Error type `NoEmptyStakingSlot` with signature `NoEmptyStakingSlot()` and selector `0xc3b03baa` #[derive( Clone, @@ -13508,6 +15497,7 @@ abi_errors.append(&mut __abi_errors_2()); MustBeValidatorInNextEpochToKick(MustBeValidatorInNextEpochToKick), NewTimeLockMustBeGreaterThanCurrent(NewTimeLockMustBeGreaterThanCurrent), NoBytecodeAtAddress(NoBytecodeAtAddress), + NoEmptyStakeRecordSlots(NoEmptyStakeRecordSlots), NoEmptyStakingSlot(NoEmptyStakingSlot), NoSelectorsProvidedForFacetForCut(NoSelectorsProvidedForFacetForCut), NodeAddressNotFoundForStaker(NodeAddressNotFoundForStaker), @@ -13793,6 +15783,11 @@ abi_errors.append(&mut __abi_errors_2()); ) { return Ok(Self::NoBytecodeAtAddress(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::NoEmptyStakeRecordSlots(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -14094,6 +16089,9 @@ abi_errors.append(&mut __abi_errors_2()); Self::NoBytecodeAtAddress(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::NoEmptyStakeRecordSlots(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::NoEmptyStakingSlot(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -14376,6 +16374,10 @@ abi_errors.append(&mut __abi_errors_2()); == ::selector() => { true } + _ if selector + == ::selector() => { + true + } _ if selector == ::selector() => { true @@ -14626,6 +16628,9 @@ abi_errors.append(&mut __abi_errors_2()); Self::NoBytecodeAtAddress(element) => { ::core::fmt::Display::fmt(element, f) } + Self::NoEmptyStakeRecordSlots(element) => { + ::core::fmt::Display::fmt(element, f) + } Self::NoEmptyStakingSlot(element) => { ::core::fmt::Display::fmt(element, f) } @@ -14955,6 +16960,11 @@ abi_errors.append(&mut __abi_errors_2()); Self::NoBytecodeAtAddress(value) } } + impl ::core::convert::From for StakingErrors { + fn from(value: NoEmptyStakeRecordSlots) -> Self { + Self::NoEmptyStakeRecordSlots(value) + } + } impl ::core::convert::From for StakingErrors { fn from(value: NoEmptyStakingSlot) -> Self { Self::NoEmptyStakingSlot(value) @@ -15041,81 +17051,404 @@ abi_errors.append(&mut __abi_errors_2()); Self::StakeAmountNotMet(value) } } - impl ::core::convert::From for StakingErrors { - fn from(value: StakeMustBeGreaterThanMinimumStake) -> Self { - Self::StakeMustBeGreaterThanMinimumStake(value) - } + impl ::core::convert::From for StakingErrors { + fn from(value: StakeMustBeGreaterThanMinimumStake) -> Self { + Self::StakeMustBeGreaterThanMinimumStake(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: StakeRecordNotFound) -> Self { + Self::StakeRecordNotFound(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: StakerAddressMismatch) -> Self { + Self::StakerAddressMismatch(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: TimeLockNotMet) -> Self { + Self::TimeLockNotMet(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: TooSoonToWithdraw) -> Self { + Self::TooSoonToWithdraw(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: TryingToWithdrawMoreThanStaked) -> Self { + Self::TryingToWithdrawMoreThanStaked(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: ValidatorAlreadyInNextValidatorSet) -> Self { + Self::ValidatorAlreadyInNextValidatorSet(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: ValidatorAlreadyInRealm) -> Self { + Self::ValidatorAlreadyInRealm(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: ValidatorIsNotInNextEpoch) -> Self { + Self::ValidatorIsNotInNextEpoch(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: ValidatorNotInNextEpoch) -> Self { + Self::ValidatorNotInNextEpoch(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: ValidatorNotPermitted) -> Self { + Self::ValidatorNotPermitted(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: ValidatorNotRegistered) -> Self { + Self::ValidatorNotRegistered(value) + } + } + impl ::core::convert::From + for StakingErrors { + fn from(value: ValidatorRegisterAttestedWalletDisabled) -> Self { + Self::ValidatorRegisterAttestedWalletDisabled(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: ValueMustBeNonzero) -> Self { + Self::ValueMustBeNonzero(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: ZeroAddress) -> Self { + Self::ZeroAddress(value) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "AdvancedEpoch", abi = "AdvancedEpoch(uint256,uint256)")] + pub struct AdvancedEpochFilter { + pub realm_id: ::ethers::core::types::U256, + pub epoch_number: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] + pub struct ApprovalFilter { + #[ethevent(indexed)] + pub owner: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub approved: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub token_id: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "ApprovalForAll", abi = "ApprovalForAll(address,address,bool)")] + pub struct ApprovalForAllFilter { + #[ethevent(indexed)] + pub owner: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub operator: ::ethers::core::types::Address, + pub approved: bool, } - impl ::core::convert::From for StakingErrors { - fn from(value: StakeRecordNotFound) -> Self { - Self::StakeRecordNotFound(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent( + name = "AttestedWalletRegistered", + abi = "AttestedWalletRegistered(address,address,(uint256,uint256))" + )] + pub struct AttestedWalletRegisteredFilter { + #[ethevent(indexed)] + pub staker: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub attested_address: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub attested_pub_key: ::ethers::core::types::H256, } - impl ::core::convert::From for StakingErrors { - fn from(value: StakerAddressMismatch) -> Self { - Self::StakerAddressMismatch(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "ClearOfflinePhaseData", abi = "ClearOfflinePhaseData(uint256)")] + pub struct ClearOfflinePhaseDataFilter { + pub data_type: ::ethers::core::types::U256, } - impl ::core::convert::From for StakingErrors { - fn from(value: TimeLockNotMet) -> Self { - Self::TimeLockNotMet(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent( + name = "ComplaintConfigSet", + abi = "ComplaintConfigSet(uint256,(uint256,uint256,uint256,uint256))" + )] + pub struct ComplaintConfigSetFilter { + pub reason: ::ethers::core::types::U256, + pub config: ComplaintConfig, } - impl ::core::convert::From for StakingErrors { - fn from(value: TooSoonToWithdraw) -> Self { - Self::TooSoonToWithdraw(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent( + name = "ConfigSet", + abi = "ConfigSet(uint256,uint256[],uint256,uint256,uint256,uint256,uint256,uint256,bool)" + )] + pub struct ConfigSetFilter { + pub new_token_reward_per_token_per_epoch: ::ethers::core::types::U256, + pub new_key_types: ::std::vec::Vec<::ethers::core::types::U256>, + pub new_minimum_validator_count: ::ethers::core::types::U256, + pub new_max_concurrent_requests: ::ethers::core::types::U256, + pub new_max_presign_count: ::ethers::core::types::U256, + pub new_min_presign_count: ::ethers::core::types::U256, + pub new_peer_checking_interval_secs: ::ethers::core::types::U256, + pub new_max_presign_concurrency: ::ethers::core::types::U256, + pub new_rpc_healthcheck_enabled: bool, } - impl ::core::convert::From for StakingErrors { - fn from(value: TryingToWithdrawMoreThanStaked) -> Self { - Self::TryingToWithdrawMoreThanStaked(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "CountOfflinePhaseData", abi = "CountOfflinePhaseData(uint256)")] + pub struct CountOfflinePhaseDataFilter { + pub data_type: ::ethers::core::types::U256, } - impl ::core::convert::From for StakingErrors { - fn from(value: ValidatorAlreadyInNextValidatorSet) -> Self { - Self::ValidatorAlreadyInNextValidatorSet(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "DebugEvent", abi = "DebugEvent(string,address,uint256)")] + pub struct DebugEventFilter { + pub message: ::std::string::String, + pub sender: ::ethers::core::types::Address, + pub value: ::ethers::core::types::U256, } - impl ::core::convert::From for StakingErrors { - fn from(value: ValidatorAlreadyInRealm) -> Self { - Self::ValidatorAlreadyInRealm(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "DevopsAdminSet", abi = "DevopsAdminSet(address)")] + pub struct DevopsAdminSetFilter { + pub new_devops_admin: ::ethers::core::types::Address, } - impl ::core::convert::From for StakingErrors { - fn from(value: ValidatorIsNotInNextEpoch) -> Self { - Self::ValidatorIsNotInNextEpoch(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent( + name = "DiamondCut", + abi = "DiamondCut((address,uint8,bytes4[])[],address,bytes)" + )] + pub struct DiamondCutFilter { + pub diamond_cut: ::std::vec::Vec, + pub init: ::ethers::core::types::Address, + pub calldata: ::ethers::core::types::Bytes, } - impl ::core::convert::From for StakingErrors { - fn from(value: ValidatorNotInNextEpoch) -> Self { - Self::ValidatorNotInNextEpoch(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "EpochEndTimeSet", abi = "EpochEndTimeSet(uint256,uint256)")] + pub struct EpochEndTimeSetFilter { + pub realm_id: ::ethers::core::types::U256, + pub new_epoch_end_time: ::ethers::core::types::U256, } - impl ::core::convert::From for StakingErrors { - fn from(value: ValidatorNotPermitted) -> Self { - Self::ValidatorNotPermitted(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "EpochLengthSet", abi = "EpochLengthSet(uint256,uint256)")] + pub struct EpochLengthSetFilter { + pub realm_id: ::ethers::core::types::U256, + pub new_epoch_length: ::ethers::core::types::U256, } - impl ::core::convert::From for StakingErrors { - fn from(value: ValidatorNotRegistered) -> Self { - Self::ValidatorNotRegistered(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "EpochTimeoutSet", abi = "EpochTimeoutSet(uint256,uint256)")] + pub struct EpochTimeoutSetFilter { + pub realm_id: ::ethers::core::types::U256, + pub new_epoch_timeout: ::ethers::core::types::U256, } - impl ::core::convert::From - for StakingErrors { - fn from(value: ValidatorRegisterAttestedWalletDisabled) -> Self { - Self::ValidatorRegisterAttestedWalletDisabled(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent( + name = "FixedCostRewardsClaimed", + abi = "FixedCostRewardsClaimed(address,uint256,uint256,uint256)" + )] + pub struct FixedCostRewardsClaimedFilter { + pub staker_address: ::ethers::core::types::Address, + pub rewards: ::ethers::core::types::U256, + pub from_epoch: ::ethers::core::types::U256, + pub to_epoch: ::ethers::core::types::U256, } - impl ::core::convert::From for StakingErrors { - fn from(value: ValueMustBeNonzero) -> Self { - Self::ValueMustBeNonzero(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "KeySetConfigSet", abi = "KeySetConfigSet(bool,string,bytes32)")] + pub struct KeySetConfigSetFilter { + pub exists: bool, + pub identifier: ::std::string::String, + pub hashed: [u8; 32], } - impl ::core::convert::From for StakingErrors { - fn from(value: ZeroAddress) -> Self { - Self::ZeroAddress(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "KeySetConfigUpdated", abi = "KeySetConfigUpdated(string)")] + pub struct KeySetConfigUpdatedFilter { + pub identifier: ::std::string::String, } #[derive( Clone, @@ -15129,10 +17462,13 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "AdvancedEpoch", abi = "AdvancedEpoch(uint256,uint256)")] - pub struct AdvancedEpochFilter { - pub realm_id: ::ethers::core::types::U256, - pub epoch_number: ::ethers::core::types::U256, + #[ethevent( + name = "KickPenaltyPercentSet", + abi = "KickPenaltyPercentSet(uint256,uint256)" + )] + pub struct KickPenaltyPercentSetFilter { + pub reason: ::ethers::core::types::U256, + pub new_kick_penalty_percent: ::ethers::core::types::U256, } #[derive( Clone, @@ -15146,14 +17482,15 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] - pub struct ApprovalFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, + #[ethevent( + name = "OwnershipTransferred", + abi = "OwnershipTransferred(address,address)" + )] + pub struct OwnershipTransferredFilter { #[ethevent(indexed)] - pub approved: ::ethers::core::types::Address, + pub previous_owner: ::ethers::core::types::Address, #[ethevent(indexed)] - pub token_id: ::ethers::core::types::U256, + pub new_owner: ::ethers::core::types::Address, } #[derive( Clone, @@ -15167,13 +17504,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "ApprovalForAll", abi = "ApprovalForAll(address,address,bool)")] - pub struct ApprovalForAllFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, + #[ethevent(name = "ReadyForNextEpoch", abi = "ReadyForNextEpoch(address,uint256)")] + pub struct ReadyForNextEpochFilter { #[ethevent(indexed)] - pub operator: ::ethers::core::types::Address, - pub approved: bool, + pub staker: ::ethers::core::types::Address, + pub epoch_number: ::ethers::core::types::U256, } #[derive( Clone, @@ -15187,17 +17522,61 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent( - name = "AttestedWalletRegistered", - abi = "AttestedWalletRegistered(address,address,(uint256,uint256))" + #[ethevent(name = "Recovered", abi = "Recovered(address,uint256)")] + pub struct RecoveredFilter { + pub token: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash )] - pub struct AttestedWalletRegisteredFilter { + #[ethevent(name = "RequestToJoin", abi = "RequestToJoin(uint256)")] + pub struct RequestToJoin1Filter { #[ethevent(indexed)] - pub staker: ::ethers::core::types::Address, + pub validator_id: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "RequestToJoin", abi = "RequestToJoin(address)")] + pub struct RequestToJoin2Filter { #[ethevent(indexed)] - pub attested_address: ::ethers::core::types::Address, + pub staker: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "RequestToLeave", abi = "RequestToLeave(address)")] + pub struct RequestToLeaveFilter { #[ethevent(indexed)] - pub attested_pub_key: ::ethers::core::types::H256, + pub staker: ::ethers::core::types::Address, } #[derive( Clone, @@ -15211,9 +17590,84 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "ClearOfflinePhaseData", abi = "ClearOfflinePhaseData(uint256)")] - pub struct ClearOfflinePhaseDataFilter { - pub data_type: ::ethers::core::types::U256, + #[ethevent( + name = "ResolverContractAddressSet", + abi = "ResolverContractAddressSet(address)" + )] + pub struct ResolverContractAddressSetFilter { + pub new_resolver_contract_address: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "RewardsDurationUpdated", abi = "RewardsDurationUpdated(uint256)")] + pub struct RewardsDurationUpdatedFilter { + pub new_duration: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent( + name = "StakeRecordCreated", + abi = "StakeRecordCreated(address,uint256,uint256,address)" + )] + pub struct StakeRecordCreatedFilter { + pub staker_address: ::ethers::core::types::Address, + pub record_id: ::ethers::core::types::U256, + pub amount: ::ethers::core::types::U256, + pub staker_address_client: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "StakeRecordRemoved", abi = "StakeRecordRemoved(address,uint256)")] + pub struct StakeRecordRemovedFilter { + pub user_staker_address: ::ethers::core::types::Address, + pub record_id: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "StakeRecordUpdated", abi = "StakeRecordUpdated(address,uint256)")] + pub struct StakeRecordUpdatedFilter { + pub staker_address: ::ethers::core::types::Address, + pub record_id: ::ethers::core::types::U256, } #[derive( Clone, @@ -15228,12 +17682,15 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethevent( - name = "ComplaintConfigSet", - abi = "ComplaintConfigSet(uint256,(uint256,uint256,uint256,uint256))" + name = "StakeRewardsClaimed", + abi = "StakeRewardsClaimed(address,uint256,uint256,uint256,uint256)" )] - pub struct ComplaintConfigSetFilter { - pub reason: ::ethers::core::types::U256, - pub config: ComplaintConfig, + pub struct StakeRewardsClaimed1Filter { + pub staker_address: ::ethers::core::types::Address, + pub record_id: ::ethers::core::types::U256, + pub rewards: ::ethers::core::types::U256, + pub from_epoch: ::ethers::core::types::U256, + pub to_epoch: ::ethers::core::types::U256, } #[derive( Clone, @@ -15248,19 +17705,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethevent( - name = "ConfigSet", - abi = "ConfigSet(uint256,uint256[],uint256,uint256,uint256,uint256,uint256,uint256,bool)" + name = "StakeRewardsClaimed", + abi = "StakeRewardsClaimed(uint256,uint256,uint256)" )] - pub struct ConfigSetFilter { - pub new_token_reward_per_token_per_epoch: ::ethers::core::types::U256, - pub new_key_types: ::std::vec::Vec<::ethers::core::types::U256>, - pub new_minimum_validator_count: ::ethers::core::types::U256, - pub new_max_concurrent_requests: ::ethers::core::types::U256, - pub new_max_presign_count: ::ethers::core::types::U256, - pub new_min_presign_count: ::ethers::core::types::U256, - pub new_peer_checking_interval_secs: ::ethers::core::types::U256, - pub new_max_presign_concurrency: ::ethers::core::types::U256, - pub new_rpc_healthcheck_enabled: bool, + pub struct StakeRewardsClaimed2Filter { + pub validator_id: ::ethers::core::types::U256, + pub record_id: ::ethers::core::types::U256, + pub rewards: ::ethers::core::types::U256, } #[derive( Clone, @@ -15274,9 +17725,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "CountOfflinePhaseData", abi = "CountOfflinePhaseData(uint256)")] - pub struct CountOfflinePhaseDataFilter { - pub data_type: ::ethers::core::types::U256, + #[ethevent(name = "Staked", abi = "Staked(address,uint256)")] + pub struct StakedFilter { + #[ethevent(indexed)] + pub staker: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, } #[derive( Clone, @@ -15290,11 +17743,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "DebugEvent", abi = "DebugEvent(string,address,uint256)")] - pub struct DebugEventFilter { - pub message: ::std::string::String, - pub sender: ::ethers::core::types::Address, - pub value: ::ethers::core::types::U256, + #[ethevent(name = "StakingTokenSet", abi = "StakingTokenSet(address)")] + pub struct StakingTokenSetFilter { + pub new_staking_token_address: ::ethers::core::types::Address, } #[derive( Clone, @@ -15308,9 +17759,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "DevopsAdminSet", abi = "DevopsAdminSet(address)")] - pub struct DevopsAdminSetFilter { - pub new_devops_admin: ::ethers::core::types::Address, + #[ethevent(name = "StateChanged", abi = "StateChanged(uint8)")] + pub struct StateChangedFilter { + pub new_state: u8, } #[derive( Clone, @@ -15324,14 +17775,14 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent( - name = "DiamondCut", - abi = "DiamondCut((address,uint8,bytes4[])[],address,bytes)" - )] - pub struct DiamondCutFilter { - pub diamond_cut: ::std::vec::Vec, - pub init: ::ethers::core::types::Address, - pub calldata: ::ethers::core::types::Bytes, + #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] + pub struct TransferFilter { + #[ethevent(indexed)] + pub from: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub to: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub token_id: ::ethers::core::types::U256, } #[derive( Clone, @@ -15345,10 +17796,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "EpochEndTimeSet", abi = "EpochEndTimeSet(uint256,uint256)")] - pub struct EpochEndTimeSetFilter { - pub realm_id: ::ethers::core::types::U256, - pub new_epoch_end_time: ::ethers::core::types::U256, + #[ethevent(name = "TrustedForwarderSet", abi = "TrustedForwarderSet(address)")] + pub struct TrustedForwarderSetFilter { + pub new_trusted_forwarder: ::ethers::core::types::Address, } #[derive( Clone, @@ -15362,10 +17812,10 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "EpochLengthSet", abi = "EpochLengthSet(uint256,uint256)")] - pub struct EpochLengthSetFilter { - pub realm_id: ::ethers::core::types::U256, - pub new_epoch_length: ::ethers::core::types::U256, + #[ethevent(name = "ValidatorBanned", abi = "ValidatorBanned(address)")] + pub struct ValidatorBannedFilter { + #[ethevent(indexed)] + pub staker: ::ethers::core::types::Address, } #[derive( Clone, @@ -15379,10 +17829,15 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "EpochTimeoutSet", abi = "EpochTimeoutSet(uint256,uint256)")] - pub struct EpochTimeoutSetFilter { - pub realm_id: ::ethers::core::types::U256, - pub new_epoch_timeout: ::ethers::core::types::U256, + #[ethevent( + name = "ValidatorCommissionClaimed", + abi = "ValidatorCommissionClaimed(address,uint256,uint256,uint256)" + )] + pub struct ValidatorCommissionClaimedFilter { + pub staker_address: ::ethers::core::types::Address, + pub rewards: ::ethers::core::types::U256, + pub from_epoch: ::ethers::core::types::U256, + pub to_epoch: ::ethers::core::types::U256, } #[derive( Clone, @@ -15397,14 +17852,12 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethevent( - name = "FixedCostRewardsClaimed", - abi = "FixedCostRewardsClaimed(address,uint256,uint256,uint256)" + name = "ValidatorKickedFromNextEpoch", + abi = "ValidatorKickedFromNextEpoch(address)" )] - pub struct FixedCostRewardsClaimedFilter { - pub staker_address: ::ethers::core::types::Address, - pub rewards: ::ethers::core::types::U256, - pub from_epoch: ::ethers::core::types::U256, - pub to_epoch: ::ethers::core::types::U256, + pub struct ValidatorKickedFromNextEpochFilter { + #[ethevent(indexed)] + pub staker: ::ethers::core::types::Address, } #[derive( Clone, @@ -15418,11 +17871,10 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "KeySetConfigSet", abi = "KeySetConfigSet(bool,string,bytes32)")] - pub struct KeySetConfigSetFilter { - pub exists: bool, - pub identifier: ::std::string::String, - pub hashed: [u8; 32], + #[ethevent(name = "ValidatorRegistered", abi = "ValidatorRegistered(address)")] + pub struct ValidatorRegisteredFilter { + #[ethevent(indexed)] + pub staker_address: ::ethers::core::types::Address, } #[derive( Clone, @@ -15436,9 +17888,12 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "KeySetConfigUpdated", abi = "KeySetConfigUpdated(string)")] - pub struct KeySetConfigUpdatedFilter { - pub identifier: ::std::string::String, + #[ethevent( + name = "ValidatorRejoinedNextEpoch", + abi = "ValidatorRejoinedNextEpoch(address)" + )] + pub struct ValidatorRejoinedNextEpochFilter { + pub staker: ::ethers::core::types::Address, } #[derive( Clone, @@ -15453,12 +17908,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethevent( - name = "KickPenaltyPercentSet", - abi = "KickPenaltyPercentSet(uint256,uint256)" + name = "VersionRequirementsUpdated", + abi = "VersionRequirementsUpdated(uint256,uint256,(uint256,uint256,uint256))" )] - pub struct KickPenaltyPercentSetFilter { - pub reason: ::ethers::core::types::U256, - pub new_kick_penalty_percent: ::ethers::core::types::U256, + pub struct VersionRequirementsUpdatedFilter { + pub index: ::ethers::core::types::U256, + pub realm_id: ::ethers::core::types::U256, + pub version: Version, } #[derive( Clone, @@ -15473,14 +17929,11 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethevent( - name = "OwnershipTransferred", - abi = "OwnershipTransferred(address,address)" + name = "VoteToAdvanceTimeOutElapsed", + abi = "VoteToAdvanceTimeOutElapsed(uint256)" )] - pub struct OwnershipTransferredFilter { - #[ethevent(indexed)] - pub previous_owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub new_owner: ::ethers::core::types::Address, + pub struct VoteToAdvanceTimeOutElapsedFilter { + pub realm_id: ::ethers::core::types::U256, } #[derive( Clone, @@ -15494,11 +17947,18 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "ReadyForNextEpoch", abi = "ReadyForNextEpoch(address,uint256)")] - pub struct ReadyForNextEpochFilter { + #[ethevent( + name = "VotedToKickValidatorInNextEpoch", + abi = "VotedToKickValidatorInNextEpoch(address,address,uint256,bytes)" + )] + pub struct VotedToKickValidatorInNextEpochFilter { #[ethevent(indexed)] - pub staker: ::ethers::core::types::Address, - pub epoch_number: ::ethers::core::types::U256, + pub reporter: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub validator_to_kick_staker_address: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub reason: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, } #[derive( Clone, @@ -15512,9 +17972,10 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "Recovered", abi = "Recovered(address,uint256)")] - pub struct RecoveredFilter { - pub token: ::ethers::core::types::Address, + #[ethevent(name = "Withdrawn", abi = "Withdrawn(address,uint256)")] + pub struct WithdrawnFilter { + #[ethevent(indexed)] + pub staker: ::ethers::core::types::Address, pub amount: ::ethers::core::types::U256, } #[derive( @@ -15529,11 +17990,8 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "RequestToJoin", abi = "RequestToJoin(address)")] - pub struct RequestToJoinFilter { - #[ethevent(indexed)] - pub staker: ::ethers::core::types::Address, - } + #[ethevent(name = "log", abi = "log(string)")] + pub struct LogFilter(pub ::std::string::String); #[derive( Clone, ::ethers::contract::EthEvent, @@ -15546,11 +18004,8 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "RequestToLeave", abi = "RequestToLeave(address)")] - pub struct RequestToLeaveFilter { - #[ethevent(indexed)] - pub staker: ::ethers::core::types::Address, - } + #[ethevent(name = "log_address", abi = "log_address(address)")] + pub struct LogAddressFilter(pub ::ethers::core::types::Address); #[derive( Clone, ::ethers::contract::EthEvent, @@ -15563,12 +18018,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent( - name = "ResolverContractAddressSet", - abi = "ResolverContractAddressSet(address)" - )] - pub struct ResolverContractAddressSetFilter { - pub new_resolver_contract_address: ::ethers::core::types::Address, + #[ethevent(name = "log_array", abi = "log_array(uint256[])")] + pub struct LogArray1Filter { + pub val: ::std::vec::Vec<::ethers::core::types::U256>, } #[derive( Clone, @@ -15582,9 +18034,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "RewardsDurationUpdated", abi = "RewardsDurationUpdated(uint256)")] - pub struct RewardsDurationUpdatedFilter { - pub new_duration: ::ethers::core::types::U256, + #[ethevent(name = "log_array", abi = "log_array(int256[])")] + pub struct LogArray2Filter { + pub val: ::std::vec::Vec<::ethers::core::types::I256>, } #[derive( Clone, @@ -15598,15 +18050,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent( - name = "StakeRecordCreated", - abi = "StakeRecordCreated(address,uint256,uint256,address)" - )] - pub struct StakeRecordCreatedFilter { - pub staker_address: ::ethers::core::types::Address, - pub record_id: ::ethers::core::types::U256, - pub amount: ::ethers::core::types::U256, - pub staker_address_client: ::ethers::core::types::Address, + #[ethevent(name = "log_array", abi = "log_array(address[])")] + pub struct LogArray3Filter { + pub val: ::std::vec::Vec<::ethers::core::types::Address>, } #[derive( Clone, @@ -15620,11 +18066,8 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "StakeRecordRemoved", abi = "StakeRecordRemoved(address,uint256)")] - pub struct StakeRecordRemovedFilter { - pub user_staker_address: ::ethers::core::types::Address, - pub record_id: ::ethers::core::types::U256, - } + #[ethevent(name = "log_bytes", abi = "log_bytes(bytes)")] + pub struct LogBytesFilter(pub ::ethers::core::types::Bytes); #[derive( Clone, ::ethers::contract::EthEvent, @@ -15637,11 +18080,8 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "StakeRecordUpdated", abi = "StakeRecordUpdated(address,uint256)")] - pub struct StakeRecordUpdatedFilter { - pub staker_address: ::ethers::core::types::Address, - pub record_id: ::ethers::core::types::U256, - } + #[ethevent(name = "log_bytes32", abi = "log_bytes32(bytes32)")] + pub struct LogBytes32Filter(pub [u8; 32]); #[derive( Clone, ::ethers::contract::EthEvent, @@ -15654,17 +18094,8 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent( - name = "StakeRewardsClaimed", - abi = "StakeRewardsClaimed(address,uint256,uint256,uint256,uint256)" - )] - pub struct StakeRewardsClaimedFilter { - pub staker_address: ::ethers::core::types::Address, - pub record_id: ::ethers::core::types::U256, - pub rewards: ::ethers::core::types::U256, - pub from_epoch: ::ethers::core::types::U256, - pub to_epoch: ::ethers::core::types::U256, - } + #[ethevent(name = "log_int", abi = "log_int(int256)")] + pub struct LogIntFilter(pub ::ethers::core::types::I256); #[derive( Clone, ::ethers::contract::EthEvent, @@ -15677,11 +18108,10 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "Staked", abi = "Staked(address,uint256)")] - pub struct StakedFilter { - #[ethevent(indexed)] - pub staker: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, + #[ethevent(name = "log_named_address", abi = "log_named_address(string,address)")] + pub struct LogNamedAddressFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::Address, } #[derive( Clone, @@ -15695,9 +18125,10 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "StakingTokenSet", abi = "StakingTokenSet(address)")] - pub struct StakingTokenSetFilter { - pub new_staking_token_address: ::ethers::core::types::Address, + #[ethevent(name = "log_named_array", abi = "log_named_array(string,uint256[])")] + pub struct LogNamedArray1Filter { + pub key: ::std::string::String, + pub val: ::std::vec::Vec<::ethers::core::types::U256>, } #[derive( Clone, @@ -15711,9 +18142,10 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "StateChanged", abi = "StateChanged(uint8)")] - pub struct StateChangedFilter { - pub new_state: u8, + #[ethevent(name = "log_named_array", abi = "log_named_array(string,int256[])")] + pub struct LogNamedArray2Filter { + pub key: ::std::string::String, + pub val: ::std::vec::Vec<::ethers::core::types::I256>, } #[derive( Clone, @@ -15727,14 +18159,10 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] - pub struct TransferFilter { - #[ethevent(indexed)] - pub from: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub to: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub token_id: ::ethers::core::types::U256, + #[ethevent(name = "log_named_array", abi = "log_named_array(string,address[])")] + pub struct LogNamedArray3Filter { + pub key: ::std::string::String, + pub val: ::std::vec::Vec<::ethers::core::types::Address>, } #[derive( Clone, @@ -15748,9 +18176,10 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "TrustedForwarderSet", abi = "TrustedForwarderSet(address)")] - pub struct TrustedForwarderSetFilter { - pub new_trusted_forwarder: ::ethers::core::types::Address, + #[ethevent(name = "log_named_bytes", abi = "log_named_bytes(string,bytes)")] + pub struct LogNamedBytesFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::Bytes, } #[derive( Clone, @@ -15764,10 +18193,10 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "ValidatorBanned", abi = "ValidatorBanned(address)")] - pub struct ValidatorBannedFilter { - #[ethevent(indexed)] - pub staker: ::ethers::core::types::Address, + #[ethevent(name = "log_named_bytes32", abi = "log_named_bytes32(string,bytes32)")] + pub struct LogNamedBytes32Filter { + pub key: ::std::string::String, + pub val: [u8; 32], } #[derive( Clone, @@ -15782,14 +18211,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethevent( - name = "ValidatorCommissionClaimed", - abi = "ValidatorCommissionClaimed(address,uint256,uint256,uint256)" + name = "log_named_decimal_int", + abi = "log_named_decimal_int(string,int256,uint256)" )] - pub struct ValidatorCommissionClaimedFilter { - pub staker_address: ::ethers::core::types::Address, - pub rewards: ::ethers::core::types::U256, - pub from_epoch: ::ethers::core::types::U256, - pub to_epoch: ::ethers::core::types::U256, + pub struct LogNamedDecimalIntFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::I256, + pub decimals: ::ethers::core::types::U256, } #[derive( Clone, @@ -15804,12 +18232,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethevent( - name = "ValidatorKickedFromNextEpoch", - abi = "ValidatorKickedFromNextEpoch(address)" + name = "log_named_decimal_uint", + abi = "log_named_decimal_uint(string,uint256,uint256)" )] - pub struct ValidatorKickedFromNextEpochFilter { - #[ethevent(indexed)] - pub staker: ::ethers::core::types::Address, + pub struct LogNamedDecimalUintFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::U256, + pub decimals: ::ethers::core::types::U256, } #[derive( Clone, @@ -15823,10 +18252,10 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "ValidatorRegistered", abi = "ValidatorRegistered(address)")] - pub struct ValidatorRegisteredFilter { - #[ethevent(indexed)] - pub staker_address: ::ethers::core::types::Address, + #[ethevent(name = "log_named_int", abi = "log_named_int(string,int256)")] + pub struct LogNamedIntFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::I256, } #[derive( Clone, @@ -15840,12 +18269,10 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent( - name = "ValidatorRejoinedNextEpoch", - abi = "ValidatorRejoinedNextEpoch(address)" - )] - pub struct ValidatorRejoinedNextEpochFilter { - pub staker: ::ethers::core::types::Address, + #[ethevent(name = "log_named_string", abi = "log_named_string(string,string)")] + pub struct LogNamedStringFilter { + pub key: ::std::string::String, + pub val: ::std::string::String, } #[derive( Clone, @@ -15859,14 +18286,10 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent( - name = "VersionRequirementsUpdated", - abi = "VersionRequirementsUpdated(uint256,uint256,(uint256,uint256,uint256))" - )] - pub struct VersionRequirementsUpdatedFilter { - pub index: ::ethers::core::types::U256, - pub realm_id: ::ethers::core::types::U256, - pub version: Version, + #[ethevent(name = "log_named_uint", abi = "log_named_uint(string,uint256)")] + pub struct LogNamedUintFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::U256, } #[derive( Clone, @@ -15880,13 +18303,8 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent( - name = "VoteToAdvanceTimeOutElapsed", - abi = "VoteToAdvanceTimeOutElapsed(uint256)" - )] - pub struct VoteToAdvanceTimeOutElapsedFilter { - pub realm_id: ::ethers::core::types::U256, - } + #[ethevent(name = "log_string", abi = "log_string(string)")] + pub struct LogStringFilter(pub ::std::string::String); #[derive( Clone, ::ethers::contract::EthEvent, @@ -15899,19 +18317,8 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent( - name = "VotedToKickValidatorInNextEpoch", - abi = "VotedToKickValidatorInNextEpoch(address,address,uint256,bytes)" - )] - pub struct VotedToKickValidatorInNextEpochFilter { - #[ethevent(indexed)] - pub reporter: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub validator_to_kick_staker_address: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub reason: ::ethers::core::types::U256, - pub data: ::ethers::core::types::Bytes, - } + #[ethevent(name = "log_uint", abi = "log_uint(uint256)")] + pub struct LogUintFilter(pub ::ethers::core::types::U256); #[derive( Clone, ::ethers::contract::EthEvent, @@ -15924,12 +18331,8 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethevent(name = "Withdrawn", abi = "Withdrawn(address,uint256)")] - pub struct WithdrawnFilter { - #[ethevent(indexed)] - pub staker: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } + #[ethevent(name = "logs", abi = "logs(bytes)")] + pub struct LogsFilter(pub ::ethers::core::types::Bytes); ///Container type for all of the contract's events #[derive( Clone, @@ -15963,14 +18366,16 @@ abi_errors.append(&mut __abi_errors_2()); OwnershipTransferredFilter(OwnershipTransferredFilter), ReadyForNextEpochFilter(ReadyForNextEpochFilter), RecoveredFilter(RecoveredFilter), - RequestToJoinFilter(RequestToJoinFilter), + RequestToJoin1Filter(RequestToJoin1Filter), + RequestToJoin2Filter(RequestToJoin2Filter), RequestToLeaveFilter(RequestToLeaveFilter), ResolverContractAddressSetFilter(ResolverContractAddressSetFilter), RewardsDurationUpdatedFilter(RewardsDurationUpdatedFilter), StakeRecordCreatedFilter(StakeRecordCreatedFilter), StakeRecordRemovedFilter(StakeRecordRemovedFilter), StakeRecordUpdatedFilter(StakeRecordUpdatedFilter), - StakeRewardsClaimedFilter(StakeRewardsClaimedFilter), + StakeRewardsClaimed1Filter(StakeRewardsClaimed1Filter), + StakeRewardsClaimed2Filter(StakeRewardsClaimed2Filter), StakedFilter(StakedFilter), StakingTokenSetFilter(StakingTokenSetFilter), StateChangedFilter(StateChangedFilter), @@ -15985,6 +18390,28 @@ abi_errors.append(&mut __abi_errors_2()); VoteToAdvanceTimeOutElapsedFilter(VoteToAdvanceTimeOutElapsedFilter), VotedToKickValidatorInNextEpochFilter(VotedToKickValidatorInNextEpochFilter), WithdrawnFilter(WithdrawnFilter), + LogFilter(LogFilter), + LogAddressFilter(LogAddressFilter), + LogArray1Filter(LogArray1Filter), + LogArray2Filter(LogArray2Filter), + LogArray3Filter(LogArray3Filter), + LogBytesFilter(LogBytesFilter), + LogBytes32Filter(LogBytes32Filter), + LogIntFilter(LogIntFilter), + LogNamedAddressFilter(LogNamedAddressFilter), + LogNamedArray1Filter(LogNamedArray1Filter), + LogNamedArray2Filter(LogNamedArray2Filter), + LogNamedArray3Filter(LogNamedArray3Filter), + LogNamedBytesFilter(LogNamedBytesFilter), + LogNamedBytes32Filter(LogNamedBytes32Filter), + LogNamedDecimalIntFilter(LogNamedDecimalIntFilter), + LogNamedDecimalUintFilter(LogNamedDecimalUintFilter), + LogNamedIntFilter(LogNamedIntFilter), + LogNamedStringFilter(LogNamedStringFilter), + LogNamedUintFilter(LogNamedUintFilter), + LogStringFilter(LogStringFilter), + LogUintFilter(LogUintFilter), + LogsFilter(LogsFilter), } impl ::ethers::contract::EthLogDecode for StakingEvents { fn decode_log( @@ -16053,8 +18480,11 @@ abi_errors.append(&mut __abi_errors_2()); if let Ok(decoded) = RecoveredFilter::decode_log(log) { return Ok(StakingEvents::RecoveredFilter(decoded)); } - if let Ok(decoded) = RequestToJoinFilter::decode_log(log) { - return Ok(StakingEvents::RequestToJoinFilter(decoded)); + if let Ok(decoded) = RequestToJoin1Filter::decode_log(log) { + return Ok(StakingEvents::RequestToJoin1Filter(decoded)); + } + if let Ok(decoded) = RequestToJoin2Filter::decode_log(log) { + return Ok(StakingEvents::RequestToJoin2Filter(decoded)); } if let Ok(decoded) = RequestToLeaveFilter::decode_log(log) { return Ok(StakingEvents::RequestToLeaveFilter(decoded)); @@ -16074,8 +18504,11 @@ abi_errors.append(&mut __abi_errors_2()); if let Ok(decoded) = StakeRecordUpdatedFilter::decode_log(log) { return Ok(StakingEvents::StakeRecordUpdatedFilter(decoded)); } - if let Ok(decoded) = StakeRewardsClaimedFilter::decode_log(log) { - return Ok(StakingEvents::StakeRewardsClaimedFilter(decoded)); + if let Ok(decoded) = StakeRewardsClaimed1Filter::decode_log(log) { + return Ok(StakingEvents::StakeRewardsClaimed1Filter(decoded)); + } + if let Ok(decoded) = StakeRewardsClaimed2Filter::decode_log(log) { + return Ok(StakingEvents::StakeRewardsClaimed2Filter(decoded)); } if let Ok(decoded) = StakedFilter::decode_log(log) { return Ok(StakingEvents::StakedFilter(decoded)); @@ -16119,6 +18552,72 @@ abi_errors.append(&mut __abi_errors_2()); if let Ok(decoded) = WithdrawnFilter::decode_log(log) { return Ok(StakingEvents::WithdrawnFilter(decoded)); } + if let Ok(decoded) = LogFilter::decode_log(log) { + return Ok(StakingEvents::LogFilter(decoded)); + } + if let Ok(decoded) = LogAddressFilter::decode_log(log) { + return Ok(StakingEvents::LogAddressFilter(decoded)); + } + if let Ok(decoded) = LogArray1Filter::decode_log(log) { + return Ok(StakingEvents::LogArray1Filter(decoded)); + } + if let Ok(decoded) = LogArray2Filter::decode_log(log) { + return Ok(StakingEvents::LogArray2Filter(decoded)); + } + if let Ok(decoded) = LogArray3Filter::decode_log(log) { + return Ok(StakingEvents::LogArray3Filter(decoded)); + } + if let Ok(decoded) = LogBytesFilter::decode_log(log) { + return Ok(StakingEvents::LogBytesFilter(decoded)); + } + if let Ok(decoded) = LogBytes32Filter::decode_log(log) { + return Ok(StakingEvents::LogBytes32Filter(decoded)); + } + if let Ok(decoded) = LogIntFilter::decode_log(log) { + return Ok(StakingEvents::LogIntFilter(decoded)); + } + if let Ok(decoded) = LogNamedAddressFilter::decode_log(log) { + return Ok(StakingEvents::LogNamedAddressFilter(decoded)); + } + if let Ok(decoded) = LogNamedArray1Filter::decode_log(log) { + return Ok(StakingEvents::LogNamedArray1Filter(decoded)); + } + if let Ok(decoded) = LogNamedArray2Filter::decode_log(log) { + return Ok(StakingEvents::LogNamedArray2Filter(decoded)); + } + if let Ok(decoded) = LogNamedArray3Filter::decode_log(log) { + return Ok(StakingEvents::LogNamedArray3Filter(decoded)); + } + if let Ok(decoded) = LogNamedBytesFilter::decode_log(log) { + return Ok(StakingEvents::LogNamedBytesFilter(decoded)); + } + if let Ok(decoded) = LogNamedBytes32Filter::decode_log(log) { + return Ok(StakingEvents::LogNamedBytes32Filter(decoded)); + } + if let Ok(decoded) = LogNamedDecimalIntFilter::decode_log(log) { + return Ok(StakingEvents::LogNamedDecimalIntFilter(decoded)); + } + if let Ok(decoded) = LogNamedDecimalUintFilter::decode_log(log) { + return Ok(StakingEvents::LogNamedDecimalUintFilter(decoded)); + } + if let Ok(decoded) = LogNamedIntFilter::decode_log(log) { + return Ok(StakingEvents::LogNamedIntFilter(decoded)); + } + if let Ok(decoded) = LogNamedStringFilter::decode_log(log) { + return Ok(StakingEvents::LogNamedStringFilter(decoded)); + } + if let Ok(decoded) = LogNamedUintFilter::decode_log(log) { + return Ok(StakingEvents::LogNamedUintFilter(decoded)); + } + if let Ok(decoded) = LogStringFilter::decode_log(log) { + return Ok(StakingEvents::LogStringFilter(decoded)); + } + if let Ok(decoded) = LogUintFilter::decode_log(log) { + return Ok(StakingEvents::LogUintFilter(decoded)); + } + if let Ok(decoded) = LogsFilter::decode_log(log) { + return Ok(StakingEvents::LogsFilter(decoded)); + } Err(::ethers::core::abi::Error::InvalidData) } } @@ -16178,7 +18677,10 @@ abi_errors.append(&mut __abi_errors_2()); ::core::fmt::Display::fmt(element, f) } Self::RecoveredFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::RequestToJoinFilter(element) => { + Self::RequestToJoin1Filter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::RequestToJoin2Filter(element) => { ::core::fmt::Display::fmt(element, f) } Self::RequestToLeaveFilter(element) => { @@ -16199,7 +18701,10 @@ abi_errors.append(&mut __abi_errors_2()); Self::StakeRecordUpdatedFilter(element) => { ::core::fmt::Display::fmt(element, f) } - Self::StakeRewardsClaimedFilter(element) => { + Self::StakeRewardsClaimed1Filter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::StakeRewardsClaimed2Filter(element) => { ::core::fmt::Display::fmt(element, f) } Self::StakedFilter(element) => ::core::fmt::Display::fmt(element, f), @@ -16238,6 +18743,48 @@ abi_errors.append(&mut __abi_errors_2()); ::core::fmt::Display::fmt(element, f) } Self::WithdrawnFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogAddressFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogArray1Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogArray2Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogArray3Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogBytesFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogBytes32Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogIntFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedAddressFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::LogNamedArray1Filter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::LogNamedArray2Filter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::LogNamedArray3Filter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::LogNamedBytesFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::LogNamedBytes32Filter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::LogNamedDecimalIntFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::LogNamedDecimalUintFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::LogNamedIntFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedStringFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::LogNamedUintFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::LogStringFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogUintFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogsFilter(element) => ::core::fmt::Display::fmt(element, f), } } } @@ -16281,182 +18828,749 @@ abi_errors.append(&mut __abi_errors_2()); Self::CountOfflinePhaseDataFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: DebugEventFilter) -> Self { - Self::DebugEventFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: DebugEventFilter) -> Self { + Self::DebugEventFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: DevopsAdminSetFilter) -> Self { + Self::DevopsAdminSetFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: DiamondCutFilter) -> Self { + Self::DiamondCutFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: EpochEndTimeSetFilter) -> Self { + Self::EpochEndTimeSetFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: EpochLengthSetFilter) -> Self { + Self::EpochLengthSetFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: EpochTimeoutSetFilter) -> Self { + Self::EpochTimeoutSetFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: FixedCostRewardsClaimedFilter) -> Self { + Self::FixedCostRewardsClaimedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: KeySetConfigSetFilter) -> Self { + Self::KeySetConfigSetFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: KeySetConfigUpdatedFilter) -> Self { + Self::KeySetConfigUpdatedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: KickPenaltyPercentSetFilter) -> Self { + Self::KickPenaltyPercentSetFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: OwnershipTransferredFilter) -> Self { + Self::OwnershipTransferredFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: ReadyForNextEpochFilter) -> Self { + Self::ReadyForNextEpochFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: RecoveredFilter) -> Self { + Self::RecoveredFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: RequestToJoin1Filter) -> Self { + Self::RequestToJoin1Filter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: RequestToJoin2Filter) -> Self { + Self::RequestToJoin2Filter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: RequestToLeaveFilter) -> Self { + Self::RequestToLeaveFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: ResolverContractAddressSetFilter) -> Self { + Self::ResolverContractAddressSetFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: RewardsDurationUpdatedFilter) -> Self { + Self::RewardsDurationUpdatedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: StakeRecordCreatedFilter) -> Self { + Self::StakeRecordCreatedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: StakeRecordRemovedFilter) -> Self { + Self::StakeRecordRemovedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: StakeRecordUpdatedFilter) -> Self { + Self::StakeRecordUpdatedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: StakeRewardsClaimed1Filter) -> Self { + Self::StakeRewardsClaimed1Filter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: StakeRewardsClaimed2Filter) -> Self { + Self::StakeRewardsClaimed2Filter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: StakedFilter) -> Self { + Self::StakedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: StakingTokenSetFilter) -> Self { + Self::StakingTokenSetFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: StateChangedFilter) -> Self { + Self::StateChangedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: TransferFilter) -> Self { + Self::TransferFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: TrustedForwarderSetFilter) -> Self { + Self::TrustedForwarderSetFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: ValidatorBannedFilter) -> Self { + Self::ValidatorBannedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: ValidatorCommissionClaimedFilter) -> Self { + Self::ValidatorCommissionClaimedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: ValidatorKickedFromNextEpochFilter) -> Self { + Self::ValidatorKickedFromNextEpochFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: ValidatorRegisteredFilter) -> Self { + Self::ValidatorRegisteredFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: ValidatorRejoinedNextEpochFilter) -> Self { + Self::ValidatorRejoinedNextEpochFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: VersionRequirementsUpdatedFilter) -> Self { + Self::VersionRequirementsUpdatedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: VoteToAdvanceTimeOutElapsedFilter) -> Self { + Self::VoteToAdvanceTimeOutElapsedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: VotedToKickValidatorInNextEpochFilter) -> Self { + Self::VotedToKickValidatorInNextEpochFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: WithdrawnFilter) -> Self { + Self::WithdrawnFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: DevopsAdminSetFilter) -> Self { - Self::DevopsAdminSetFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogFilter) -> Self { + Self::LogFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: DiamondCutFilter) -> Self { - Self::DiamondCutFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogAddressFilter) -> Self { + Self::LogAddressFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: EpochEndTimeSetFilter) -> Self { - Self::EpochEndTimeSetFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogArray1Filter) -> Self { + Self::LogArray1Filter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: EpochLengthSetFilter) -> Self { - Self::EpochLengthSetFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogArray2Filter) -> Self { + Self::LogArray2Filter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: EpochTimeoutSetFilter) -> Self { - Self::EpochTimeoutSetFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogArray3Filter) -> Self { + Self::LogArray3Filter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: FixedCostRewardsClaimedFilter) -> Self { - Self::FixedCostRewardsClaimedFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogBytesFilter) -> Self { + Self::LogBytesFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: KeySetConfigSetFilter) -> Self { - Self::KeySetConfigSetFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogBytes32Filter) -> Self { + Self::LogBytes32Filter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: KeySetConfigUpdatedFilter) -> Self { - Self::KeySetConfigUpdatedFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogIntFilter) -> Self { + Self::LogIntFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: KickPenaltyPercentSetFilter) -> Self { - Self::KickPenaltyPercentSetFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogNamedAddressFilter) -> Self { + Self::LogNamedAddressFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: OwnershipTransferredFilter) -> Self { - Self::OwnershipTransferredFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogNamedArray1Filter) -> Self { + Self::LogNamedArray1Filter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: ReadyForNextEpochFilter) -> Self { - Self::ReadyForNextEpochFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogNamedArray2Filter) -> Self { + Self::LogNamedArray2Filter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: RecoveredFilter) -> Self { - Self::RecoveredFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogNamedArray3Filter) -> Self { + Self::LogNamedArray3Filter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: RequestToJoinFilter) -> Self { - Self::RequestToJoinFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogNamedBytesFilter) -> Self { + Self::LogNamedBytesFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: RequestToLeaveFilter) -> Self { - Self::RequestToLeaveFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogNamedBytes32Filter) -> Self { + Self::LogNamedBytes32Filter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: ResolverContractAddressSetFilter) -> Self { - Self::ResolverContractAddressSetFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogNamedDecimalIntFilter) -> Self { + Self::LogNamedDecimalIntFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: RewardsDurationUpdatedFilter) -> Self { - Self::RewardsDurationUpdatedFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogNamedDecimalUintFilter) -> Self { + Self::LogNamedDecimalUintFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: StakeRecordCreatedFilter) -> Self { - Self::StakeRecordCreatedFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogNamedIntFilter) -> Self { + Self::LogNamedIntFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: StakeRecordRemovedFilter) -> Self { - Self::StakeRecordRemovedFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogNamedStringFilter) -> Self { + Self::LogNamedStringFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: StakeRecordUpdatedFilter) -> Self { - Self::StakeRecordUpdatedFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogNamedUintFilter) -> Self { + Self::LogNamedUintFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: StakeRewardsClaimedFilter) -> Self { - Self::StakeRewardsClaimedFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogStringFilter) -> Self { + Self::LogStringFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: StakedFilter) -> Self { - Self::StakedFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogUintFilter) -> Self { + Self::LogUintFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: StakingTokenSetFilter) -> Self { - Self::StakingTokenSetFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogsFilter) -> Self { + Self::LogsFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: StateChangedFilter) -> Self { - Self::StateChangedFilter(value) - } + ///Container type for all input parameters for the `IS_TEST` function with signature `IS_TEST()` and selector `0xfa7626d4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "IS_TEST", abi = "IS_TEST()")] + pub struct IsTestCall; + ///Container type for all input parameters for the `_generateAddresses` function with signature `_generateAddresses(uint256)` and selector `0x678ac78a` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "_generateAddresses", abi = "_generateAddresses(uint256)")] + pub struct GenerateAddressesCall { + pub num_addresses: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `_generateAddressesWithOffset` function with signature `_generateAddressesWithOffset(uint256,uint256)` and selector `0xa5187b2b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "_generateAddressesWithOffset", + abi = "_generateAddressesWithOffset(uint256,uint256)" + )] + pub struct GenerateAddressesWithOffsetCall { + pub num_addresses: ::ethers::core::types::U256, + pub offset: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `_generatePubKeys` function with signature `_generatePubKeys(uint256)` and selector `0xfed0a77b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "_generatePubKeys", abi = "_generatePubKeys(uint256)")] + pub struct GeneratePubKeysCall { + pub stakers: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `_generateUint256s` function with signature `_generateUint256s(uint256)` and selector `0xae517f4d` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "_generateUint256s", abi = "_generateUint256s(uint256)")] + pub struct GenerateUint256SCall { + pub num_uint_25_6s: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `_generateUint256sWithOffset` function with signature `_generateUint256sWithOffset(uint256,uint256)` and selector `0xfb9d55b8` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "_generateUint256sWithOffset", + abi = "_generateUint256sWithOffset(uint256,uint256)" + )] + pub struct GenerateUint256SWithOffsetCall { + pub num_uint_25_6s: ::ethers::core::types::U256, + pub offset: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `_generateValidators` function with signature `_generateValidators(uint256)` and selector `0xc5344d40` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "_generateValidators", abi = "_generateValidators(uint256)")] + pub struct GenerateValidatorsCall { + pub num_validators: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `addRealm` function with signature `addRealm()` and selector `0x472a7d89` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "addRealm", abi = "addRealm()")] + pub struct AddRealmCall; + ///Container type for all input parameters for the `adminKickValidatorInNextEpoch` function with signature `adminKickValidatorInNextEpoch(address)` and selector `0x7aa086e7` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "adminKickValidatorInNextEpoch", + abi = "adminKickValidatorInNextEpoch(address)" + )] + pub struct AdminKickValidatorInNextEpochCall { + pub validator_staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `adminRejoinValidator` function with signature `adminRejoinValidator(uint256,address)` and selector `0x4cd938ce` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "adminRejoinValidator", + abi = "adminRejoinValidator(uint256,address)" + )] + pub struct AdminRejoinValidatorCall { + pub realm_id: ::ethers::core::types::U256, + pub staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `adminSetValidatorRegisterAttestedWalletDisabled` function with signature `adminSetValidatorRegisterAttestedWalletDisabled(address,bool)` and selector `0x15319384` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "adminSetValidatorRegisterAttestedWalletDisabled", + abi = "adminSetValidatorRegisterAttestedWalletDisabled(address,bool)" + )] + pub struct AdminSetValidatorRegisterAttestedWalletDisabledCall { + pub validator_address: ::ethers::core::types::Address, + pub disabled: bool, + } + ///Container type for all input parameters for the `adminSetValidatorsInCurrentEpoch` function with signature `adminSetValidatorsInCurrentEpoch(uint256,address[])` and selector `0x7db39fb4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "adminSetValidatorsInCurrentEpoch", + abi = "adminSetValidatorsInCurrentEpoch(uint256,address[])" + )] + pub struct AdminSetValidatorsInCurrentEpochCall { + pub realm_id: ::ethers::core::types::U256, + pub validators_for_current_epoch: ::std::vec::Vec< + ::ethers::core::types::Address, + >, } - impl ::core::convert::From for StakingEvents { - fn from(value: TransferFilter) -> Self { - Self::TransferFilter(value) - } + ///Container type for all input parameters for the `adminSetValidatorsInNextEpoch` function with signature `adminSetValidatorsInNextEpoch(uint256,address[])` and selector `0x2d5e1361` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "adminSetValidatorsInNextEpoch", + abi = "adminSetValidatorsInNextEpoch(uint256,address[])" + )] + pub struct AdminSetValidatorsInNextEpochCall { + pub realm_id: ::ethers::core::types::U256, + pub validators_for_next_epoch: ::std::vec::Vec<::ethers::core::types::Address>, } - impl ::core::convert::From for StakingEvents { - fn from(value: TrustedForwarderSetFilter) -> Self { - Self::TrustedForwarderSetFilter(value) - } + ///Container type for all input parameters for the `adminSetupShadowSplicing` function with signature `adminSetupShadowSplicing(uint256,uint256,address[])` and selector `0x684d8bd9` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "adminSetupShadowSplicing", + abi = "adminSetupShadowSplicing(uint256,uint256,address[])" + )] + pub struct AdminSetupShadowSplicingCall { + pub source_realm_id: ::ethers::core::types::U256, + pub target_realm_id: ::ethers::core::types::U256, + pub target_validators: ::std::vec::Vec<::ethers::core::types::Address>, } - impl ::core::convert::From for StakingEvents { - fn from(value: ValidatorBannedFilter) -> Self { - Self::ValidatorBannedFilter(value) - } + ///Container type for all input parameters for the `adminSlashValidator` function with signature `adminSlashValidator(uint256,address)` and selector `0x1f1c50cb` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "adminSlashValidator", + abi = "adminSlashValidator(uint256,address)" + )] + pub struct AdminSlashValidatorCall { + pub percentage: ::ethers::core::types::U256, + pub staker_address: ::ethers::core::types::Address, } - impl ::core::convert::From for StakingEvents { - fn from(value: ValidatorCommissionClaimedFilter) -> Self { - Self::ValidatorCommissionClaimedFilter(value) - } + ///Container type for all input parameters for the `adminStakeForUser` function with signature `adminStakeForUser(address,address,uint256,uint256)` and selector `0xf5008ed2` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "adminStakeForUser", + abi = "adminStakeForUser(address,address,uint256,uint256)" + )] + pub struct AdminStakeForUserCall { + pub user_staker_address: ::ethers::core::types::Address, + pub operator_staker_address: ::ethers::core::types::Address, + pub time_lock: ::ethers::core::types::U256, + pub amount: ::ethers::core::types::U256, } - impl ::core::convert::From for StakingEvents { - fn from(value: ValidatorKickedFromNextEpochFilter) -> Self { - Self::ValidatorKickedFromNextEpochFilter(value) - } + ///Container type for all input parameters for the `adminUnfreezeForUser` function with signature `adminUnfreezeForUser(address,address,uint256)` and selector `0x06732018` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "adminUnfreezeForUser", + abi = "adminUnfreezeForUser(address,address,uint256)" + )] + pub struct AdminUnfreezeForUserCall { + pub user_staker_address: ::ethers::core::types::Address, + pub operator_staker_address: ::ethers::core::types::Address, + pub stake_id: ::ethers::core::types::U256, } - impl ::core::convert::From for StakingEvents { - fn from(value: ValidatorRegisteredFilter) -> Self { - Self::ValidatorRegisteredFilter(value) - } + ///Container type for all input parameters for the `advanceEpoch` function with signature `advanceEpoch(uint256)` and selector `0xf3b87779` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "advanceEpoch", abi = "advanceEpoch(uint256)")] + pub struct AdvanceEpochCall { + pub realm_id: ::ethers::core::types::U256, } - impl ::core::convert::From for StakingEvents { - fn from(value: ValidatorRejoinedNextEpochFilter) -> Self { - Self::ValidatorRejoinedNextEpochFilter(value) - } + ///Container type for all input parameters for the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "approve", abi = "approve(address,uint256)")] + pub struct ApproveCall { + pub approved: ::ethers::core::types::Address, + pub token_id: ::ethers::core::types::U256, } - impl ::core::convert::From for StakingEvents { - fn from(value: VersionRequirementsUpdatedFilter) -> Self { - Self::VersionRequirementsUpdatedFilter(value) - } + ///Container type for all input parameters for the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] + pub struct BalanceOfCall { + pub owner: ::ethers::core::types::Address, } - impl ::core::convert::From for StakingEvents { - fn from(value: VoteToAdvanceTimeOutElapsedFilter) -> Self { - Self::VoteToAdvanceTimeOutElapsedFilter(value) - } + ///Container type for all input parameters for the `calculateRewardsPerDay` function with signature `calculateRewardsPerDay((uint256,uint256,address[],uint256))` and selector `0x9be372e0` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "calculateRewardsPerDay", + abi = "calculateRewardsPerDay((uint256,uint256,address[],uint256))" + )] + pub struct CalculateRewardsPerDayCall { + pub global_stats: RewardEpochGlobalStats, } - impl ::core::convert::From for StakingEvents { - fn from(value: VotedToKickValidatorInNextEpochFilter) -> Self { - Self::VotedToKickValidatorInNextEpochFilter(value) - } + ///Container type for all input parameters for the `calculateStakeWeight` function with signature `calculateStakeWeight(uint256,uint256)` and selector `0x2b7c29e3` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "calculateStakeWeight", + abi = "calculateStakeWeight(uint256,uint256)" + )] + pub struct CalculateStakeWeightCall { + pub time_lock: ::ethers::core::types::U256, + pub amount: ::ethers::core::types::U256, } - impl ::core::convert::From for StakingEvents { - fn from(value: WithdrawnFilter) -> Self { - Self::WithdrawnFilter(value) - } + ///Container type for all input parameters for the `checkActiveOrUnlockedOrPausedState` function with signature `checkActiveOrUnlockedOrPausedState(uint8)` and selector `0xb6e184c0` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "checkActiveOrUnlockedOrPausedState", + abi = "checkActiveOrUnlockedOrPausedState(uint8)" + )] + pub struct CheckActiveOrUnlockedOrPausedStateCall { + pub state: u8, } - ///Container type for all input parameters for the `addRealm` function with signature `addRealm()` and selector `0x472a7d89` + ///Container type for all input parameters for the `checkStakingAmounts` function with signature `checkStakingAmounts(address)` and selector `0x49919966` #[derive( Clone, ::ethers::contract::EthCall, @@ -16469,9 +19583,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "addRealm", abi = "addRealm()")] - pub struct AddRealmCall; - ///Container type for all input parameters for the `adminKickValidatorInNextEpoch` function with signature `adminKickValidatorInNextEpoch(address)` and selector `0x7aa086e7` + #[ethcall(name = "checkStakingAmounts", abi = "checkStakingAmounts(address)")] + pub struct CheckStakingAmountsCall { + pub staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `checkVersion` function with signature `checkVersion(uint256,(uint256,uint256,uint256))` and selector `0xcffbfc20` #[derive( Clone, ::ethers::contract::EthCall, @@ -16485,13 +19601,14 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "adminKickValidatorInNextEpoch", - abi = "adminKickValidatorInNextEpoch(address)" + name = "checkVersion", + abi = "checkVersion(uint256,(uint256,uint256,uint256))" )] - pub struct AdminKickValidatorInNextEpochCall { - pub validator_staker_address: ::ethers::core::types::Address, + pub struct CheckVersionCall { + pub realm_id: ::ethers::core::types::U256, + pub version: Version, } - ///Container type for all input parameters for the `adminRejoinValidator` function with signature `adminRejoinValidator(uint256,address)` and selector `0x4cd938ce` + ///Container type for all input parameters for the `claimFixedCostRewards` function with signature `claimFixedCostRewards(uint256,uint256)` and selector `0xcc5e546b` #[derive( Clone, ::ethers::contract::EthCall, @@ -16505,14 +19622,14 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "adminRejoinValidator", - abi = "adminRejoinValidator(uint256,address)" + name = "claimFixedCostRewards", + abi = "claimFixedCostRewards(uint256,uint256)" )] - pub struct AdminRejoinValidatorCall { + pub struct ClaimFixedCostRewardsCall { pub realm_id: ::ethers::core::types::U256, - pub staker_address: ::ethers::core::types::Address, + pub max_number_of_epochs_to_claim: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `adminSetValidatorRegisterAttestedWalletDisabled` function with signature `adminSetValidatorRegisterAttestedWalletDisabled(address,bool)` and selector `0x15319384` + ///Container type for all input parameters for the `claimStakeRewards` function with signature `claimStakeRewards(uint256,address,uint256,uint256)` and selector `0x0ffb0d94` #[derive( Clone, ::ethers::contract::EthCall, @@ -16526,14 +19643,16 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "adminSetValidatorRegisterAttestedWalletDisabled", - abi = "adminSetValidatorRegisterAttestedWalletDisabled(address,bool)" + name = "claimStakeRewards", + abi = "claimStakeRewards(uint256,address,uint256,uint256)" )] - pub struct AdminSetValidatorRegisterAttestedWalletDisabledCall { - pub validator_address: ::ethers::core::types::Address, - pub disabled: bool, + pub struct ClaimStakeRewardsCall { + pub realm_id: ::ethers::core::types::U256, + pub staker_address: ::ethers::core::types::Address, + pub stake_record_id: ::ethers::core::types::U256, + pub max_number_of_epochs_to_claim: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `adminSetValidatorsInCurrentEpoch` function with signature `adminSetValidatorsInCurrentEpoch(uint256,address[])` and selector `0x7db39fb4` + ///Container type for all input parameters for the `claimValidatorCommission` function with signature `claimValidatorCommission(uint256,uint256)` and selector `0x123eab4b` #[derive( Clone, ::ethers::contract::EthCall, @@ -16547,16 +19666,14 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "adminSetValidatorsInCurrentEpoch", - abi = "adminSetValidatorsInCurrentEpoch(uint256,address[])" + name = "claimValidatorCommission", + abi = "claimValidatorCommission(uint256,uint256)" )] - pub struct AdminSetValidatorsInCurrentEpochCall { + pub struct ClaimValidatorCommissionCall { pub realm_id: ::ethers::core::types::U256, - pub validators_for_current_epoch: ::std::vec::Vec< - ::ethers::core::types::Address, - >, + pub max_number_of_epochs_to_claim: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `adminSetValidatorsInNextEpoch` function with signature `adminSetValidatorsInNextEpoch(uint256,address[])` and selector `0x2d5e1361` + ///Container type for all input parameters for the `complaintConfig` function with signature `complaintConfig(uint256)` and selector `0x02f6da56` #[derive( Clone, ::ethers::contract::EthCall, @@ -16569,15 +19686,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "adminSetValidatorsInNextEpoch", - abi = "adminSetValidatorsInNextEpoch(uint256,address[])" - )] - pub struct AdminSetValidatorsInNextEpochCall { - pub realm_id: ::ethers::core::types::U256, - pub validators_for_next_epoch: ::std::vec::Vec<::ethers::core::types::Address>, + #[ethcall(name = "complaintConfig", abi = "complaintConfig(uint256)")] + pub struct ComplaintConfigCall { + pub reason: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `adminSetupShadowSplicing` function with signature `adminSetupShadowSplicing(uint256,uint256,address[])` and selector `0x684d8bd9` + ///Container type for all input parameters for the `contractResolver` function with signature `contractResolver()` and selector `0x50d17b5e` #[derive( Clone, ::ethers::contract::EthCall, @@ -16590,16 +19703,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "adminSetupShadowSplicing", - abi = "adminSetupShadowSplicing(uint256,uint256,address[])" - )] - pub struct AdminSetupShadowSplicingCall { - pub source_realm_id: ::ethers::core::types::U256, - pub target_realm_id: ::ethers::core::types::U256, - pub target_validators: ::std::vec::Vec<::ethers::core::types::Address>, - } - ///Container type for all input parameters for the `adminSlashValidator` function with signature `adminSlashValidator(uint256,address)` and selector `0x1f1c50cb` + #[ethcall(name = "contractResolver", abi = "contractResolver()")] + pub struct ContractResolverCall; + ///Container type for all input parameters for the `countOfCurrentValidatorsReadyForNextEpoch` function with signature `countOfCurrentValidatorsReadyForNextEpoch(uint256)` and selector `0x31232f31` #[derive( Clone, ::ethers::contract::EthCall, @@ -16613,14 +19719,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "adminSlashValidator", - abi = "adminSlashValidator(uint256,address)" + name = "countOfCurrentValidatorsReadyForNextEpoch", + abi = "countOfCurrentValidatorsReadyForNextEpoch(uint256)" )] - pub struct AdminSlashValidatorCall { - pub percentage: ::ethers::core::types::U256, - pub staker_address: ::ethers::core::types::Address, + pub struct CountOfCurrentValidatorsReadyForNextEpochCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `adminStakeForUser` function with signature `adminStakeForUser(address,address,uint256,uint256)` and selector `0xf5008ed2` + ///Container type for all input parameters for the `countOfNextValidatorsReadyForNextEpoch` function with signature `countOfNextValidatorsReadyForNextEpoch(uint256)` and selector `0xdce6f078` #[derive( Clone, ::ethers::contract::EthCall, @@ -16634,16 +19739,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "adminStakeForUser", - abi = "adminStakeForUser(address,address,uint256,uint256)" + name = "countOfNextValidatorsReadyForNextEpoch", + abi = "countOfNextValidatorsReadyForNextEpoch(uint256)" )] - pub struct AdminStakeForUserCall { - pub user_staker_address: ::ethers::core::types::Address, - pub operator_staker_address: ::ethers::core::types::Address, - pub time_lock: ::ethers::core::types::U256, - pub amount: ::ethers::core::types::U256, + pub struct CountOfNextValidatorsReadyForNextEpochCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `adminUnfreezeForUser` function with signature `adminUnfreezeForUser(address,address,uint256)` and selector `0x06732018` + ///Container type for all input parameters for the `currentValidatorCountForConsensus` function with signature `currentValidatorCountForConsensus(uint256)` and selector `0x9423f589` #[derive( Clone, ::ethers::contract::EthCall, @@ -16657,15 +19759,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "adminUnfreezeForUser", - abi = "adminUnfreezeForUser(address,address,uint256)" + name = "currentValidatorCountForConsensus", + abi = "currentValidatorCountForConsensus(uint256)" )] - pub struct AdminUnfreezeForUserCall { - pub user_staker_address: ::ethers::core::types::Address, - pub operator_staker_address: ::ethers::core::types::Address, - pub stake_id: ::ethers::core::types::U256, + pub struct CurrentValidatorCountForConsensusCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `advanceEpoch` function with signature `advanceEpoch(uint256)` and selector `0xf3b87779` + ///Container type for all input parameters for the `decreaseRewardPool` function with signature `decreaseRewardPool(uint256,uint256)` and selector `0xfc36f915` #[derive( Clone, ::ethers::contract::EthCall, @@ -16678,11 +19778,12 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "advanceEpoch", abi = "advanceEpoch(uint256)")] - pub struct AdvanceEpochCall { + #[ethcall(name = "decreaseRewardPool", abi = "decreaseRewardPool(uint256,uint256)")] + pub struct DecreaseRewardPoolCall { pub realm_id: ::ethers::core::types::U256, + pub amount: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3` + ///Container type for all input parameters for the `deleteKeySet` function with signature `deleteKeySet(string)` and selector `0x0815b188` #[derive( Clone, ::ethers::contract::EthCall, @@ -16695,12 +19796,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "approve", abi = "approve(address,uint256)")] - pub struct ApproveCall { - pub approved: ::ethers::core::types::Address, - pub token_id: ::ethers::core::types::U256, + #[ethcall(name = "deleteKeySet", abi = "deleteKeySet(string)")] + pub struct DeleteKeySetCall { + pub identifier: ::std::string::String, } - ///Container type for all input parameters for the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` + ///Container type for all input parameters for the `diamondCut` function with signature `diamondCut((address,uint8,bytes4[])[],address,bytes)` and selector `0x1f931c1c` #[derive( Clone, ::ethers::contract::EthCall, @@ -16713,11 +19813,16 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] - pub struct BalanceOfCall { - pub owner: ::ethers::core::types::Address, + #[ethcall( + name = "diamondCut", + abi = "diamondCut((address,uint8,bytes4[])[],address,bytes)" + )] + pub struct DiamondCutCall { + pub diamond_cut: ::std::vec::Vec, + pub init: ::ethers::core::types::Address, + pub calldata: ::ethers::core::types::Bytes, } - ///Container type for all input parameters for the `calculateRewardsPerDay` function with signature `calculateRewardsPerDay((uint256,uint256,address[],uint256))` and selector `0x9be372e0` + ///Container type for all input parameters for the `emitClearOfflinePhaseData` function with signature `emitClearOfflinePhaseData(uint256)` and selector `0x00a52713` #[derive( Clone, ::ethers::contract::EthCall, @@ -16731,13 +19836,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "calculateRewardsPerDay", - abi = "calculateRewardsPerDay((uint256,uint256,address[],uint256))" + name = "emitClearOfflinePhaseData", + abi = "emitClearOfflinePhaseData(uint256)" )] - pub struct CalculateRewardsPerDayCall { - pub global_stats: RewardEpochGlobalStats, + pub struct EmitClearOfflinePhaseDataCall { + pub data_type: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `calculateStakeWeight` function with signature `calculateStakeWeight(uint256,uint256)` and selector `0x2b7c29e3` + ///Container type for all input parameters for the `emitCountOfflinePhaseData` function with signature `emitCountOfflinePhaseData(uint256)` and selector `0x9a74745d` #[derive( Clone, ::ethers::contract::EthCall, @@ -16751,14 +19856,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "calculateStakeWeight", - abi = "calculateStakeWeight(uint256,uint256)" + name = "emitCountOfflinePhaseData", + abi = "emitCountOfflinePhaseData(uint256)" )] - pub struct CalculateStakeWeightCall { - pub time_lock: ::ethers::core::types::U256, - pub amount: ::ethers::core::types::U256, + pub struct EmitCountOfflinePhaseDataCall { + pub data_type: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `checkActiveOrUnlockedOrPausedState` function with signature `checkActiveOrUnlockedOrPausedState(uint8)` and selector `0xb6e184c0` + ///Container type for all input parameters for the `epoch` function with signature `epoch(uint256)` and selector `0x5487c577` #[derive( Clone, ::ethers::contract::EthCall, @@ -16771,14 +19875,103 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "checkActiveOrUnlockedOrPausedState", - abi = "checkActiveOrUnlockedOrPausedState(uint8)" + #[ethcall(name = "epoch", abi = "epoch(uint256)")] + pub struct EpochCall { + pub realm_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `excludeArtifacts` function with signature `excludeArtifacts()` and selector `0xb5508aa9` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "excludeArtifacts", abi = "excludeArtifacts()")] + pub struct ExcludeArtifactsCall; + ///Container type for all input parameters for the `excludeContracts` function with signature `excludeContracts()` and selector `0xe20c9f71` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "excludeContracts", abi = "excludeContracts()")] + pub struct ExcludeContractsCall; + ///Container type for all input parameters for the `excludeSelectors` function with signature `excludeSelectors()` and selector `0xb0464fdc` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "excludeSelectors", abi = "excludeSelectors()")] + pub struct ExcludeSelectorsCall; + ///Container type for all input parameters for the `excludeSenders` function with signature `excludeSenders()` and selector `0x1ed7831c` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "excludeSenders", abi = "excludeSenders()")] + pub struct ExcludeSendersCall; + ///Container type for all input parameters for the `exit` function with signature `exit()` and selector `0xe9fad8ee` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "exit", abi = "exit()")] + pub struct ExitCall; + ///Container type for all input parameters for the `facetAddress` function with signature `facetAddress(bytes4)` and selector `0xcdffacc6` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash )] - pub struct CheckActiveOrUnlockedOrPausedStateCall { - pub state: u8, + #[ethcall(name = "facetAddress", abi = "facetAddress(bytes4)")] + pub struct FacetAddressCall { + pub function_selector: [u8; 4], } - ///Container type for all input parameters for the `checkStakingAmounts` function with signature `checkStakingAmounts(address)` and selector `0x49919966` + ///Container type for all input parameters for the `facetAddresses` function with signature `facetAddresses()` and selector `0x52ef6b2c` #[derive( Clone, ::ethers::contract::EthCall, @@ -16791,11 +19984,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "checkStakingAmounts", abi = "checkStakingAmounts(address)")] - pub struct CheckStakingAmountsCall { - pub staker_address: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `checkVersion` function with signature `checkVersion(uint256,(uint256,uint256,uint256))` and selector `0xcffbfc20` + #[ethcall(name = "facetAddresses", abi = "facetAddresses()")] + pub struct FacetAddressesCall; + ///Container type for all input parameters for the `facetFunctionSelectors` function with signature `facetFunctionSelectors(address)` and selector `0xadfca15e` #[derive( Clone, ::ethers::contract::EthCall, @@ -16808,15 +19999,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "checkVersion", - abi = "checkVersion(uint256,(uint256,uint256,uint256))" - )] - pub struct CheckVersionCall { - pub realm_id: ::ethers::core::types::U256, - pub version: Version, + #[ethcall(name = "facetFunctionSelectors", abi = "facetFunctionSelectors(address)")] + pub struct FacetFunctionSelectorsCall { + pub facet: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `claimFixedCostRewards` function with signature `claimFixedCostRewards(uint256,uint256)` and selector `0xcc5e546b` + ///Container type for all input parameters for the `facets` function with signature `facets()` and selector `0x7a0ed627` #[derive( Clone, ::ethers::contract::EthCall, @@ -16829,15 +20016,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "claimFixedCostRewards", - abi = "claimFixedCostRewards(uint256,uint256)" - )] - pub struct ClaimFixedCostRewardsCall { - pub realm_id: ::ethers::core::types::U256, - pub max_number_of_epochs_to_claim: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `claimStakeRewards` function with signature `claimStakeRewards(uint256,address,uint256,uint256)` and selector `0x0ffb0d94` + #[ethcall(name = "facets", abi = "facets()")] + pub struct FacetsCall; + ///Container type for all input parameters for the `failed` function with signature `failed()` and selector `0xba414fa6` #[derive( Clone, ::ethers::contract::EthCall, @@ -16850,17 +20031,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "claimStakeRewards", - abi = "claimStakeRewards(uint256,address,uint256,uint256)" - )] - pub struct ClaimStakeRewardsCall { - pub realm_id: ::ethers::core::types::U256, - pub staker_address: ::ethers::core::types::Address, - pub stake_record_id: ::ethers::core::types::U256, - pub max_number_of_epochs_to_claim: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `claimValidatorCommission` function with signature `claimValidatorCommission(uint256,uint256)` and selector `0x123eab4b` + #[ethcall(name = "failed", abi = "failed()")] + pub struct FailedCall; + ///Container type for all input parameters for the `getActiveUnkickedValidatorCount` function with signature `getActiveUnkickedValidatorCount(uint256)` and selector `0x7a808c0d` #[derive( Clone, ::ethers::contract::EthCall, @@ -16874,14 +20047,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "claimValidatorCommission", - abi = "claimValidatorCommission(uint256,uint256)" + name = "getActiveUnkickedValidatorCount", + abi = "getActiveUnkickedValidatorCount(uint256)" )] - pub struct ClaimValidatorCommissionCall { + pub struct GetActiveUnkickedValidatorCountCall { pub realm_id: ::ethers::core::types::U256, - pub max_number_of_epochs_to_claim: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `complaintConfig` function with signature `complaintConfig(uint256)` and selector `0x02f6da56` + ///Container type for all input parameters for the `getActiveUnkickedValidatorStructs` function with signature `getActiveUnkickedValidatorStructs(uint256)` and selector `0xe4ccc020` #[derive( Clone, ::ethers::contract::EthCall, @@ -16894,11 +20066,14 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "complaintConfig", abi = "complaintConfig(uint256)")] - pub struct ComplaintConfigCall { - pub reason: ::ethers::core::types::U256, + #[ethcall( + name = "getActiveUnkickedValidatorStructs", + abi = "getActiveUnkickedValidatorStructs(uint256)" + )] + pub struct GetActiveUnkickedValidatorStructsCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `contractResolver` function with signature `contractResolver()` and selector `0x50d17b5e` + ///Container type for all input parameters for the `getActiveUnkickedValidatorStructsAndCounts` function with signature `getActiveUnkickedValidatorStructsAndCounts(uint256)` and selector `0xd09cd5a8` #[derive( Clone, ::ethers::contract::EthCall, @@ -16911,9 +20086,14 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "contractResolver", abi = "contractResolver()")] - pub struct ContractResolverCall; - ///Container type for all input parameters for the `countOfCurrentValidatorsReadyForNextEpoch` function with signature `countOfCurrentValidatorsReadyForNextEpoch(uint256)` and selector `0x31232f31` + #[ethcall( + name = "getActiveUnkickedValidatorStructsAndCounts", + abi = "getActiveUnkickedValidatorStructsAndCounts(uint256)" + )] + pub struct GetActiveUnkickedValidatorStructsAndCountsCall { + pub realm_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `getActiveUnkickedValidators` function with signature `getActiveUnkickedValidators(uint256)` and selector `0x8b6de0d1` #[derive( Clone, ::ethers::contract::EthCall, @@ -16927,13 +20107,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "countOfCurrentValidatorsReadyForNextEpoch", - abi = "countOfCurrentValidatorsReadyForNextEpoch(uint256)" + name = "getActiveUnkickedValidators", + abi = "getActiveUnkickedValidators(uint256)" )] - pub struct CountOfCurrentValidatorsReadyForNextEpochCall { + pub struct GetActiveUnkickedValidatorsCall { pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `countOfNextValidatorsReadyForNextEpoch` function with signature `countOfNextValidatorsReadyForNextEpoch(uint256)` and selector `0xdce6f078` + ///Container type for all input parameters for the `getAllReserveValidators` function with signature `getAllReserveValidators()` and selector `0xbd8578d6` #[derive( Clone, ::ethers::contract::EthCall, @@ -16946,14 +20126,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "countOfNextValidatorsReadyForNextEpoch", - abi = "countOfNextValidatorsReadyForNextEpoch(uint256)" - )] - pub struct CountOfNextValidatorsReadyForNextEpochCall { - pub realm_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `currentValidatorCountForConsensus` function with signature `currentValidatorCountForConsensus(uint256)` and selector `0x9423f589` + #[ethcall(name = "getAllReserveValidators", abi = "getAllReserveValidators()")] + pub struct GetAllReserveValidatorsCall; + ///Container type for all input parameters for the `getAllUnkickedValidators` function with signature `getAllUnkickedValidators()` and selector `0x0df47a24` #[derive( Clone, ::ethers::contract::EthCall, @@ -16966,14 +20141,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "currentValidatorCountForConsensus", - abi = "currentValidatorCountForConsensus(uint256)" - )] - pub struct CurrentValidatorCountForConsensusCall { - pub realm_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `decreaseRewardPool` function with signature `decreaseRewardPool(uint256,uint256)` and selector `0xfc36f915` + #[ethcall(name = "getAllUnkickedValidators", abi = "getAllUnkickedValidators()")] + pub struct GetAllUnkickedValidatorsCall; + ///Container type for all input parameters for the `getAllValidators` function with signature `getAllValidators()` and selector `0xf3513a37` #[derive( Clone, ::ethers::contract::EthCall, @@ -16986,12 +20156,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "decreaseRewardPool", abi = "decreaseRewardPool(uint256,uint256)")] - pub struct DecreaseRewardPoolCall { - pub realm_id: ::ethers::core::types::U256, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `deleteKeySet` function with signature `deleteKeySet(string)` and selector `0x0815b188` + #[ethcall(name = "getAllValidators", abi = "getAllValidators()")] + pub struct GetAllValidatorsCall; + ///Container type for all input parameters for the `getApproved` function with signature `getApproved(uint256)` and selector `0x081812fc` #[derive( Clone, ::ethers::contract::EthCall, @@ -17004,11 +20171,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "deleteKeySet", abi = "deleteKeySet(string)")] - pub struct DeleteKeySetCall { - pub identifier: ::std::string::String, + #[ethcall(name = "getApproved", abi = "getApproved(uint256)")] + pub struct GetApprovedCall { + pub token_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `diamondCut` function with signature `diamondCut((address,uint8,bytes4[])[],address,bytes)` and selector `0x1f931c1c` + ///Container type for all input parameters for the `getAttestedPubKey` function with signature `getAttestedPubKey(address)` and selector `0xe9332ea7` #[derive( Clone, ::ethers::contract::EthCall, @@ -17021,16 +20188,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "diamondCut", - abi = "diamondCut((address,uint8,bytes4[])[],address,bytes)" - )] - pub struct DiamondCutCall { - pub diamond_cut: ::std::vec::Vec, - pub init: ::ethers::core::types::Address, - pub calldata: ::ethers::core::types::Bytes, + #[ethcall(name = "getAttestedPubKey", abi = "getAttestedPubKey(address)")] + pub struct GetAttestedPubKeyCall { + pub attested_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `emitClearOfflinePhaseData` function with signature `emitClearOfflinePhaseData(uint256)` and selector `0x00a52713` + ///Container type for all input parameters for the `getCurrentRealmIdForStakerAddress` function with signature `getCurrentRealmIdForStakerAddress(address)` and selector `0x88de4e25` #[derive( Clone, ::ethers::contract::EthCall, @@ -17044,13 +20206,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "emitClearOfflinePhaseData", - abi = "emitClearOfflinePhaseData(uint256)" + name = "getCurrentRealmIdForStakerAddress", + abi = "getCurrentRealmIdForStakerAddress(address)" )] - pub struct EmitClearOfflinePhaseDataCall { - pub data_type: ::ethers::core::types::U256, + pub struct GetCurrentRealmIdForStakerAddressCall { + pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `emitCountOfflinePhaseData` function with signature `emitCountOfflinePhaseData(uint256)` and selector `0x9a74745d` + ///Container type for all input parameters for the `getDelegatedStakersWithUnfreezingStakes` function with signature `getDelegatedStakersWithUnfreezingStakes(address,uint256,uint256)` and selector `0x9fe51529` #[derive( Clone, ::ethers::contract::EthCall, @@ -17064,13 +20226,15 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "emitCountOfflinePhaseData", - abi = "emitCountOfflinePhaseData(uint256)" + name = "getDelegatedStakersWithUnfreezingStakes", + abi = "getDelegatedStakersWithUnfreezingStakes(address,uint256,uint256)" )] - pub struct EmitCountOfflinePhaseDataCall { - pub data_type: ::ethers::core::types::U256, + pub struct GetDelegatedStakersWithUnfreezingStakesCall { + pub validator_address: ::ethers::core::types::Address, + pub limit: ::ethers::core::types::U256, + pub offset: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `epoch` function with signature `epoch(uint256)` and selector `0x5487c577` + ///Container type for all input parameters for the `getDelegatedStakersWithUnfreezingStakesCount` function with signature `getDelegatedStakersWithUnfreezingStakesCount(address)` and selector `0x8c3ccf4c` #[derive( Clone, ::ethers::contract::EthCall, @@ -17083,11 +20247,14 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "epoch", abi = "epoch(uint256)")] - pub struct EpochCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall( + name = "getDelegatedStakersWithUnfreezingStakesCount", + abi = "getDelegatedStakersWithUnfreezingStakesCount(address)" + )] + pub struct GetDelegatedStakersWithUnfreezingStakesCountCall { + pub validator_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `exit` function with signature `exit()` and selector `0xe9fad8ee` + ///Container type for all input parameters for the `getEmptyStakeRecordSlots` function with signature `getEmptyStakeRecordSlots(address,address)` and selector `0xa6f67c51` #[derive( Clone, ::ethers::contract::EthCall, @@ -17100,9 +20267,15 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "exit", abi = "exit()")] - pub struct ExitCall; - ///Container type for all input parameters for the `facetAddress` function with signature `facetAddress(bytes4)` and selector `0xcdffacc6` + #[ethcall( + name = "getEmptyStakeRecordSlots", + abi = "getEmptyStakeRecordSlots(address,address)" + )] + pub struct GetEmptyStakeRecordSlotsCall { + pub user_staker_address: ::ethers::core::types::Address, + pub operator_staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `getKeySet` function with signature `getKeySet(string)` and selector `0xa305e5fe` #[derive( Clone, ::ethers::contract::EthCall, @@ -17115,11 +20288,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "facetAddress", abi = "facetAddress(bytes4)")] - pub struct FacetAddressCall { - pub function_selector: [u8; 4], + #[ethcall(name = "getKeySet", abi = "getKeySet(string)")] + pub struct GetKeySetCall { + pub identifier: ::std::string::String, } - ///Container type for all input parameters for the `facetAddresses` function with signature `facetAddresses()` and selector `0x52ef6b2c` + ///Container type for all input parameters for the `getKeyTypes` function with signature `getKeyTypes()` and selector `0xf1b877a8` #[derive( Clone, ::ethers::contract::EthCall, @@ -17132,9 +20305,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "facetAddresses", abi = "facetAddresses()")] - pub struct FacetAddressesCall; - ///Container type for all input parameters for the `facetFunctionSelectors` function with signature `facetFunctionSelectors(address)` and selector `0xadfca15e` + #[ethcall(name = "getKeyTypes", abi = "getKeyTypes()")] + pub struct GetKeyTypesCall; + ///Container type for all input parameters for the `getKickedValidators` function with signature `getKickedValidators(uint256)` and selector `0x4b6afbbb` #[derive( Clone, ::ethers::contract::EthCall, @@ -17147,11 +20320,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "facetFunctionSelectors", abi = "facetFunctionSelectors(address)")] - pub struct FacetFunctionSelectorsCall { - pub facet: ::ethers::core::types::Address, + #[ethcall(name = "getKickedValidators", abi = "getKickedValidators(uint256)")] + pub struct GetKickedValidatorsCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `facets` function with signature `facets()` and selector `0x7a0ed627` + ///Container type for all input parameters for the `getLastStakeRecord` function with signature `getLastStakeRecord(address,address)` and selector `0xfc73fb85` #[derive( Clone, ::ethers::contract::EthCall, @@ -17164,9 +20337,12 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "facets", abi = "facets()")] - pub struct FacetsCall; - ///Container type for all input parameters for the `getActiveUnkickedValidatorCount` function with signature `getActiveUnkickedValidatorCount(uint256)` and selector `0x7a808c0d` + #[ethcall(name = "getLastStakeRecord", abi = "getLastStakeRecord(address,address)")] + pub struct GetLastStakeRecordCall { + pub user: ::ethers::core::types::Address, + pub staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `getLitCirc` function with signature `getLitCirc()` and selector `0xebc17602` #[derive( Clone, ::ethers::contract::EthCall, @@ -17179,14 +20355,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "getActiveUnkickedValidatorCount", - abi = "getActiveUnkickedValidatorCount(uint256)" - )] - pub struct GetActiveUnkickedValidatorCountCall { - pub realm_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `getActiveUnkickedValidatorStructs` function with signature `getActiveUnkickedValidatorStructs(uint256)` and selector `0xe4ccc020` + #[ethcall(name = "getLitCirc", abi = "getLitCirc()")] + pub struct GetLitCircCall; + ///Container type for all input parameters for the `getLowestRewardEpochNumber` function with signature `getLowestRewardEpochNumber()` and selector `0x3866c0ef` #[derive( Clone, ::ethers::contract::EthCall, @@ -17199,14 +20370,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "getActiveUnkickedValidatorStructs", - abi = "getActiveUnkickedValidatorStructs(uint256)" - )] - pub struct GetActiveUnkickedValidatorStructsCall { - pub realm_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `getActiveUnkickedValidatorStructsAndCounts` function with signature `getActiveUnkickedValidatorStructsAndCounts(uint256)` and selector `0xd09cd5a8` + #[ethcall(name = "getLowestRewardEpochNumber", abi = "getLowestRewardEpochNumber()")] + pub struct GetLowestRewardEpochNumberCall; + ///Container type for all input parameters for the `getMaxVersion` function with signature `getMaxVersion(uint256)` and selector `0x73dd15ac` #[derive( Clone, ::ethers::contract::EthCall, @@ -17219,14 +20385,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "getActiveUnkickedValidatorStructsAndCounts", - abi = "getActiveUnkickedValidatorStructsAndCounts(uint256)" - )] - pub struct GetActiveUnkickedValidatorStructsAndCountsCall { + #[ethcall(name = "getMaxVersion", abi = "getMaxVersion(uint256)")] + pub struct GetMaxVersionCall { pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getActiveUnkickedValidators` function with signature `getActiveUnkickedValidators(uint256)` and selector `0x8b6de0d1` + ///Container type for all input parameters for the `getMaxVersionString` function with signature `getMaxVersionString(uint256)` and selector `0x64a481f5` #[derive( Clone, ::ethers::contract::EthCall, @@ -17236,17 +20399,14 @@ abi_errors.append(&mut __abi_errors_2()); Default, Debug, PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "getActiveUnkickedValidators", - abi = "getActiveUnkickedValidators(uint256)" + Eq, + Hash )] - pub struct GetActiveUnkickedValidatorsCall { + #[ethcall(name = "getMaxVersionString", abi = "getMaxVersionString(uint256)")] + pub struct GetMaxVersionStringCall { pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getAllReserveValidators` function with signature `getAllReserveValidators()` and selector `0xbd8578d6` + ///Container type for all input parameters for the `getMaximumStake` function with signature `getMaximumStake()` and selector `0x468a4883` #[derive( Clone, ::ethers::contract::EthCall, @@ -17259,9 +20419,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getAllReserveValidators", abi = "getAllReserveValidators()")] - pub struct GetAllReserveValidatorsCall; - ///Container type for all input parameters for the `getAllUnkickedValidators` function with signature `getAllUnkickedValidators()` and selector `0x0df47a24` + #[ethcall(name = "getMaximumStake", abi = "getMaximumStake()")] + pub struct GetMaximumStakeCall; + ///Container type for all input parameters for the `getMinVersion` function with signature `getMinVersion(uint256)` and selector `0x18443e59` #[derive( Clone, ::ethers::contract::EthCall, @@ -17274,9 +20434,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getAllUnkickedValidators", abi = "getAllUnkickedValidators()")] - pub struct GetAllUnkickedValidatorsCall; - ///Container type for all input parameters for the `getAllValidators` function with signature `getAllValidators()` and selector `0xf3513a37` + #[ethcall(name = "getMinVersion", abi = "getMinVersion(uint256)")] + pub struct GetMinVersionCall { + pub realm_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `getMinVersionString` function with signature `getMinVersionString(uint256)` and selector `0xf57610e3` #[derive( Clone, ::ethers::contract::EthCall, @@ -17289,9 +20451,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getAllValidators", abi = "getAllValidators()")] - pub struct GetAllValidatorsCall; - ///Container type for all input parameters for the `getApproved` function with signature `getApproved(uint256)` and selector `0x081812fc` + #[ethcall(name = "getMinVersionString", abi = "getMinVersionString(uint256)")] + pub struct GetMinVersionStringCall { + pub realm_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `getMinimumSelfStake` function with signature `getMinimumSelfStake()` and selector `0x8bc97a37` #[derive( Clone, ::ethers::contract::EthCall, @@ -17304,11 +20468,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getApproved", abi = "getApproved(uint256)")] - pub struct GetApprovedCall { - pub token_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `getAttestedPubKey` function with signature `getAttestedPubKey(address)` and selector `0xe9332ea7` + #[ethcall(name = "getMinimumSelfStake", abi = "getMinimumSelfStake()")] + pub struct GetMinimumSelfStakeCall; + ///Container type for all input parameters for the `getMinimumStake` function with signature `getMinimumStake()` and selector `0xd9bbd278` #[derive( Clone, ::ethers::contract::EthCall, @@ -17321,11 +20483,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getAttestedPubKey", abi = "getAttestedPubKey(address)")] - pub struct GetAttestedPubKeyCall { - pub attested_address: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `getCurrentRealmIdForStakerAddress` function with signature `getCurrentRealmIdForStakerAddress(address)` and selector `0x88de4e25` + #[ethcall(name = "getMinimumStake", abi = "getMinimumStake()")] + pub struct GetMinimumStakeCall; + ///Container type for all input parameters for the `getMostRecentStakeRecord` function with signature `getMostRecentStakeRecord(address,address)` and selector `0x7d0f412f` #[derive( Clone, ::ethers::contract::EthCall, @@ -17339,13 +20499,14 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "getCurrentRealmIdForStakerAddress", - abi = "getCurrentRealmIdForStakerAddress(address)" + name = "getMostRecentStakeRecord", + abi = "getMostRecentStakeRecord(address,address)" )] - pub struct GetCurrentRealmIdForStakerAddressCall { - pub staker_address: ::ethers::core::types::Address, + pub struct GetMostRecentStakeRecordCall { + pub user_staker_address: ::ethers::core::types::Address, + pub operator_staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getDelegatedStakersWithUnfreezingStakes` function with signature `getDelegatedStakersWithUnfreezingStakes(address,uint256,uint256)` and selector `0x9fe51529` + ///Container type for all input parameters for the `getNodeAttestedPubKeyMappings` function with signature `getNodeAttestedPubKeyMappings(address[])` and selector `0x88790aee` #[derive( Clone, ::ethers::contract::EthCall, @@ -17359,15 +20520,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "getDelegatedStakersWithUnfreezingStakes", - abi = "getDelegatedStakersWithUnfreezingStakes(address,uint256,uint256)" + name = "getNodeAttestedPubKeyMappings", + abi = "getNodeAttestedPubKeyMappings(address[])" )] - pub struct GetDelegatedStakersWithUnfreezingStakesCall { - pub validator_address: ::ethers::core::types::Address, - pub limit: ::ethers::core::types::U256, - pub offset: ::ethers::core::types::U256, + pub struct GetNodeAttestedPubKeyMappingsCall { + pub addresses: ::std::vec::Vec<::ethers::core::types::Address>, } - ///Container type for all input parameters for the `getDelegatedStakersWithUnfreezingStakesCount` function with signature `getDelegatedStakersWithUnfreezingStakesCount(address)` and selector `0x8c3ccf4c` + ///Container type for all input parameters for the `getNodeDemerits` function with signature `getNodeDemerits(address)` and selector `0xa8d6cedd` #[derive( Clone, ::ethers::contract::EthCall, @@ -17380,14 +20539,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "getDelegatedStakersWithUnfreezingStakesCount", - abi = "getDelegatedStakersWithUnfreezingStakesCount(address)" - )] - pub struct GetDelegatedStakersWithUnfreezingStakesCountCall { - pub validator_address: ::ethers::core::types::Address, + #[ethcall(name = "getNodeDemerits", abi = "getNodeDemerits(address)")] + pub struct GetNodeDemeritsCall { + pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getEmptyStakeRecordSlots` function with signature `getEmptyStakeRecordSlots(address,address)` and selector `0xa6f67c51` + ///Container type for all input parameters for the `getNodeStakerAddressMappings` function with signature `getNodeStakerAddressMappings(address[])` and selector `0x90fba112` #[derive( Clone, ::ethers::contract::EthCall, @@ -17401,14 +20557,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "getEmptyStakeRecordSlots", - abi = "getEmptyStakeRecordSlots(address,address)" + name = "getNodeStakerAddressMappings", + abi = "getNodeStakerAddressMappings(address[])" )] - pub struct GetEmptyStakeRecordSlotsCall { - pub user_staker_address: ::ethers::core::types::Address, - pub operator_staker_address: ::ethers::core::types::Address, + pub struct GetNodeStakerAddressMappingsCall { + pub addresses: ::std::vec::Vec<::ethers::core::types::Address>, } - ///Container type for all input parameters for the `getKeySet` function with signature `getKeySet(string)` and selector `0xa305e5fe` + ///Container type for all input parameters for the `getNonShadowValidators` function with signature `getNonShadowValidators(uint256)` and selector `0x65e3dcf6` #[derive( Clone, ::ethers::contract::EthCall, @@ -17421,11 +20576,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getKeySet", abi = "getKeySet(string)")] - pub struct GetKeySetCall { - pub identifier: ::std::string::String, + #[ethcall(name = "getNonShadowValidators", abi = "getNonShadowValidators(uint256)")] + pub struct GetNonShadowValidatorsCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getKeyTypes` function with signature `getKeyTypes()` and selector `0xf1b877a8` + ///Container type for all input parameters for the `getNonShadowValidatorsInCurrentEpochLength` function with signature `getNonShadowValidatorsInCurrentEpochLength(uint256)` and selector `0x399ebc13` #[derive( Clone, ::ethers::contract::EthCall, @@ -17438,9 +20593,14 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getKeyTypes", abi = "getKeyTypes()")] - pub struct GetKeyTypesCall; - ///Container type for all input parameters for the `getKickedValidators` function with signature `getKickedValidators(uint256)` and selector `0x4b6afbbb` + #[ethcall( + name = "getNonShadowValidatorsInCurrentEpochLength", + abi = "getNonShadowValidatorsInCurrentEpochLength(uint256)" + )] + pub struct GetNonShadowValidatorsInCurrentEpochLengthCall { + pub realm_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `getRealmIdForStakerAddress` function with signature `getRealmIdForStakerAddress(address)` and selector `0xaa3bed0b` #[derive( Clone, ::ethers::contract::EthCall, @@ -17453,11 +20613,14 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getKickedValidators", abi = "getKickedValidators(uint256)")] - pub struct GetKickedValidatorsCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall( + name = "getRealmIdForStakerAddress", + abi = "getRealmIdForStakerAddress(address)" + )] + pub struct GetRealmIdForStakerAddressCall { + pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getLastStakeRecord` function with signature `getLastStakeRecord(address,address)` and selector `0xfc73fb85` + ///Container type for all input parameters for the `getRewardEpoch` function with signature `getRewardEpoch(address,uint256)` and selector `0x7e867f87` #[derive( Clone, ::ethers::contract::EthCall, @@ -17470,12 +20633,12 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getLastStakeRecord", abi = "getLastStakeRecord(address,address)")] - pub struct GetLastStakeRecordCall { - pub user: ::ethers::core::types::Address, + #[ethcall(name = "getRewardEpoch", abi = "getRewardEpoch(address,uint256)")] + pub struct GetRewardEpochCall { pub staker_address: ::ethers::core::types::Address, + pub reward_epoch_number: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getLitCirc` function with signature `getLitCirc()` and selector `0xebc17602` + ///Container type for all input parameters for the `getRewardEpochGlobalStats` function with signature `getRewardEpochGlobalStats(uint256)` and selector `0x2c9d1844` #[derive( Clone, ::ethers::contract::EthCall, @@ -17488,9 +20651,14 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getLitCirc", abi = "getLitCirc()")] - pub struct GetLitCircCall; - ///Container type for all input parameters for the `getLowestRewardEpochNumber` function with signature `getLowestRewardEpochNumber()` and selector `0x3866c0ef` + #[ethcall( + name = "getRewardEpochGlobalStats", + abi = "getRewardEpochGlobalStats(uint256)" + )] + pub struct GetRewardEpochGlobalStatsCall { + pub epoch_number: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `getRewardEpochNumber` function with signature `getRewardEpochNumber(uint256)` and selector `0xba1d8fef` #[derive( Clone, ::ethers::contract::EthCall, @@ -17503,9 +20671,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getLowestRewardEpochNumber", abi = "getLowestRewardEpochNumber()")] - pub struct GetLowestRewardEpochNumberCall; - ///Container type for all input parameters for the `getMaxVersion` function with signature `getMaxVersion(uint256)` and selector `0x73dd15ac` + #[ethcall(name = "getRewardEpochNumber", abi = "getRewardEpochNumber(uint256)")] + pub struct GetRewardEpochNumberCall { + pub realm_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `getRewardEpochView` function with signature `getRewardEpochView(address,uint256)` and selector `0x709fe8a3` #[derive( Clone, ::ethers::contract::EthCall, @@ -17518,11 +20688,12 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getMaxVersion", abi = "getMaxVersion(uint256)")] - pub struct GetMaxVersionCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall(name = "getRewardEpochView", abi = "getRewardEpochView(address,uint256)")] + pub struct GetRewardEpochViewCall { + pub staker_address: ::ethers::core::types::Address, + pub reward_epoch_number: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getMaxVersionString` function with signature `getMaxVersionString(uint256)` and selector `0x64a481f5` + ///Container type for all input parameters for the `getSelfStakeRecordCount` function with signature `getSelfStakeRecordCount(address)` and selector `0x01362dc3` #[derive( Clone, ::ethers::contract::EthCall, @@ -17535,11 +20706,14 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getMaxVersionString", abi = "getMaxVersionString(uint256)")] - pub struct GetMaxVersionStringCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall( + name = "getSelfStakeRecordCount", + abi = "getSelfStakeRecordCount(address)" + )] + pub struct GetSelfStakeRecordCountCall { + pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getMaximumStake` function with signature `getMaximumStake()` and selector `0x468a4883` + ///Container type for all input parameters for the `getShadowRealmIdForStakerAddress` function with signature `getShadowRealmIdForStakerAddress(address)` and selector `0x455636de` #[derive( Clone, ::ethers::contract::EthCall, @@ -17552,9 +20726,14 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getMaximumStake", abi = "getMaximumStake()")] - pub struct GetMaximumStakeCall; - ///Container type for all input parameters for the `getMinVersion` function with signature `getMinVersion(uint256)` and selector `0x18443e59` + #[ethcall( + name = "getShadowRealmIdForStakerAddress", + abi = "getShadowRealmIdForStakerAddress(address)" + )] + pub struct GetShadowRealmIdForStakerAddressCall { + pub staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `getShadowValidators` function with signature `getShadowValidators(uint256)` and selector `0xcc090c8a` #[derive( Clone, ::ethers::contract::EthCall, @@ -17567,11 +20746,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getMinVersion", abi = "getMinVersion(uint256)")] - pub struct GetMinVersionCall { + #[ethcall(name = "getShadowValidators", abi = "getShadowValidators(uint256)")] + pub struct GetShadowValidatorsCall { pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getMinVersionString` function with signature `getMinVersionString(uint256)` and selector `0xf57610e3` + ///Container type for all input parameters for the `getStakeRecord` function with signature `getStakeRecord(address,uint256,address)` and selector `0x114ed11d` #[derive( Clone, ::ethers::contract::EthCall, @@ -17584,11 +20763,13 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getMinVersionString", abi = "getMinVersionString(uint256)")] - pub struct GetMinVersionStringCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall(name = "getStakeRecord", abi = "getStakeRecord(address,uint256,address)")] + pub struct GetStakeRecordCall { + pub staker_address: ::ethers::core::types::Address, + pub record_id: ::ethers::core::types::U256, + pub user_staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getMinimumSelfStake` function with signature `getMinimumSelfStake()` and selector `0x8bc97a37` + ///Container type for all input parameters for the `getStakeRecordCount` function with signature `getStakeRecordCount(address,address)` and selector `0x125fc3d4` #[derive( Clone, ::ethers::contract::EthCall, @@ -17601,9 +20782,15 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getMinimumSelfStake", abi = "getMinimumSelfStake()")] - pub struct GetMinimumSelfStakeCall; - ///Container type for all input parameters for the `getMinimumStake` function with signature `getMinimumStake()` and selector `0xd9bbd278` + #[ethcall( + name = "getStakeRecordCount", + abi = "getStakeRecordCount(address,address)" + )] + pub struct GetStakeRecordCountCall { + pub user_staker_address: ::ethers::core::types::Address, + pub operator_staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `getStakeRecordsForUser` function with signature `getStakeRecordsForUser(address,address)` and selector `0xdc1fab7f` #[derive( Clone, ::ethers::contract::EthCall, @@ -17616,9 +20803,15 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getMinimumStake", abi = "getMinimumStake()")] - pub struct GetMinimumStakeCall; - ///Container type for all input parameters for the `getNodeAttestedPubKeyMappings` function with signature `getNodeAttestedPubKeyMappings(address[])` and selector `0x88790aee` + #[ethcall( + name = "getStakeRecordsForUser", + abi = "getStakeRecordsForUser(address,address)" + )] + pub struct GetStakeRecordsForUserCall { + pub user_staker_address: ::ethers::core::types::Address, + pub operator_staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `getStakeWeightInEpoch` function with signature `getStakeWeightInEpoch(address,uint256,address,uint256)` and selector `0x580f68db` #[derive( Clone, ::ethers::contract::EthCall, @@ -17632,13 +20825,16 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "getNodeAttestedPubKeyMappings", - abi = "getNodeAttestedPubKeyMappings(address[])" + name = "getStakeWeightInEpoch", + abi = "getStakeWeightInEpoch(address,uint256,address,uint256)" )] - pub struct GetNodeAttestedPubKeyMappingsCall { - pub addresses: ::std::vec::Vec<::ethers::core::types::Address>, + pub struct GetStakeWeightInEpochCall { + pub staker_address: ::ethers::core::types::Address, + pub record_id: ::ethers::core::types::U256, + pub user_staker_address: ::ethers::core::types::Address, + pub reward_epoch_number: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getNodeDemerits` function with signature `getNodeDemerits(address)` and selector `0xa8d6cedd` + ///Container type for all input parameters for the `getThreshold` function with signature `getThreshold(uint256)` and selector `0x4615d5e9` #[derive( Clone, ::ethers::contract::EthCall, @@ -17651,11 +20847,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getNodeDemerits", abi = "getNodeDemerits(address)")] - pub struct GetNodeDemeritsCall { - pub staker_address: ::ethers::core::types::Address, + #[ethcall(name = "getThreshold", abi = "getThreshold(uint256)")] + pub struct GetThresholdCall { + pub node_count: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getNodeStakerAddressMappings` function with signature `getNodeStakerAddressMappings(address[])` and selector `0x90fba112` + ///Container type for all input parameters for the `getTimelockInEpoch` function with signature `getTimelockInEpoch(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)` and selector `0x2db912e4` #[derive( Clone, ::ethers::contract::EthCall, @@ -17669,13 +20865,30 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "getNodeStakerAddressMappings", - abi = "getNodeStakerAddressMappings(address[])" + name = "getTimelockInEpoch", + abi = "getTimelockInEpoch(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)" + )] + pub struct GetTimelockInEpochCall { + pub staker_address: ::ethers::core::types::Address, + pub stake_record: StakeRecord, + pub reward_epoch_number: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `getTokenContractAddress` function with signature `getTokenContractAddress()` and selector `0x22e45584` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash )] - pub struct GetNodeStakerAddressMappingsCall { - pub addresses: ::std::vec::Vec<::ethers::core::types::Address>, - } - ///Container type for all input parameters for the `getNonShadowValidators` function with signature `getNonShadowValidators(uint256)` and selector `0x65e3dcf6` + #[ethcall(name = "getTokenContractAddress", abi = "getTokenContractAddress()")] + pub struct GetTokenContractAddressCall; + ///Container type for all input parameters for the `getTokenPrice` function with signature `getTokenPrice()` and selector `0x4b94f50e` #[derive( Clone, ::ethers::contract::EthCall, @@ -17688,11 +20901,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getNonShadowValidators", abi = "getNonShadowValidators(uint256)")] - pub struct GetNonShadowValidatorsCall { - pub realm_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `getNonShadowValidatorsInCurrentEpochLength` function with signature `getNonShadowValidatorsInCurrentEpochLength(uint256)` and selector `0x399ebc13` + #[ethcall(name = "getTokenPrice", abi = "getTokenPrice()")] + pub struct GetTokenPriceCall; + ///Container type for all input parameters for the `getTokensStaked` function with signature `getTokensStaked(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)` and selector `0x0fd78304` #[derive( Clone, ::ethers::contract::EthCall, @@ -17706,13 +20917,15 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "getNonShadowValidatorsInCurrentEpochLength", - abi = "getNonShadowValidatorsInCurrentEpochLength(uint256)" + name = "getTokensStaked", + abi = "getTokensStaked(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)" )] - pub struct GetNonShadowValidatorsInCurrentEpochLengthCall { - pub realm_id: ::ethers::core::types::U256, + pub struct GetTokensStakedCall { + pub staker_address: ::ethers::core::types::Address, + pub stake_record: StakeRecord, + pub reward_epoch_number: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getRealmIdForStakerAddress` function with signature `getRealmIdForStakerAddress(address)` and selector `0xaa3bed0b` + ///Container type for all input parameters for the `getTotalStake` function with signature `getTotalStake(address)` and selector `0x1e7ff8f6` #[derive( Clone, ::ethers::contract::EthCall, @@ -17725,14 +20938,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "getRealmIdForStakerAddress", - abi = "getRealmIdForStakerAddress(address)" - )] - pub struct GetRealmIdForStakerAddressCall { + #[ethcall(name = "getTotalStake", abi = "getTotalStake(address)")] + pub struct GetTotalStakeCall { pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getRewardEpoch` function with signature `getRewardEpoch(address,uint256)` and selector `0x7e867f87` + ///Container type for all input parameters for the `getTotalStakeByUser` function with signature `getTotalStakeByUser(address,address)` and selector `0xd349660a` #[derive( Clone, ::ethers::contract::EthCall, @@ -17745,12 +20955,15 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getRewardEpoch", abi = "getRewardEpoch(address,uint256)")] - pub struct GetRewardEpochCall { + #[ethcall( + name = "getTotalStakeByUser", + abi = "getTotalStakeByUser(address,address)" + )] + pub struct GetTotalStakeByUserCall { pub staker_address: ::ethers::core::types::Address, - pub reward_epoch_number: ::ethers::core::types::U256, + pub user: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getRewardEpochGlobalStats` function with signature `getRewardEpochGlobalStats(uint256)` and selector `0x2c9d1844` + ///Container type for all input parameters for the `getTrustedForwarder` function with signature `getTrustedForwarder()` and selector `0xce1b815f` #[derive( Clone, ::ethers::contract::EthCall, @@ -17763,14 +20976,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "getRewardEpochGlobalStats", - abi = "getRewardEpochGlobalStats(uint256)" - )] - pub struct GetRewardEpochGlobalStatsCall { - pub epoch_number: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `getRewardEpochNumber` function with signature `getRewardEpochNumber(uint256)` and selector `0xba1d8fef` + #[ethcall(name = "getTrustedForwarder", abi = "getTrustedForwarder()")] + pub struct GetTrustedForwarderCall; + ///Container type for all input parameters for the `getUnfrozenStakeCountForUser` function with signature `getUnfrozenStakeCountForUser(address,address)` and selector `0x5a0909fa` #[derive( Clone, ::ethers::contract::EthCall, @@ -17783,11 +20991,15 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getRewardEpochNumber", abi = "getRewardEpochNumber(uint256)")] - pub struct GetRewardEpochNumberCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall( + name = "getUnfrozenStakeCountForUser", + abi = "getUnfrozenStakeCountForUser(address,address)" + )] + pub struct GetUnfrozenStakeCountForUserCall { + pub user_staker_address: ::ethers::core::types::Address, + pub operator_staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getRewardEpochView` function with signature `getRewardEpochView(address,uint256)` and selector `0x709fe8a3` + ///Container type for all input parameters for the `getValidatorsDelegated` function with signature `getValidatorsDelegated(address)` and selector `0x5b2fcdcf` #[derive( Clone, ::ethers::contract::EthCall, @@ -17800,12 +21012,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getRewardEpochView", abi = "getRewardEpochView(address,uint256)")] - pub struct GetRewardEpochViewCall { - pub staker_address: ::ethers::core::types::Address, - pub reward_epoch_number: ::ethers::core::types::U256, + #[ethcall(name = "getValidatorsDelegated", abi = "getValidatorsDelegated(address)")] + pub struct GetValidatorsDelegatedCall { + pub user: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getSelfStakeRecordCount` function with signature `getSelfStakeRecordCount(address)` and selector `0x01362dc3` + ///Container type for all input parameters for the `getValidatorsInCurrentEpoch` function with signature `getValidatorsInCurrentEpoch(uint256)` and selector `0xeccd9e0e` #[derive( Clone, ::ethers::contract::EthCall, @@ -17819,13 +21030,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "getSelfStakeRecordCount", - abi = "getSelfStakeRecordCount(address)" + name = "getValidatorsInCurrentEpoch", + abi = "getValidatorsInCurrentEpoch(uint256)" )] - pub struct GetSelfStakeRecordCountCall { - pub staker_address: ::ethers::core::types::Address, + pub struct GetValidatorsInCurrentEpochCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getShadowRealmIdForStakerAddress` function with signature `getShadowRealmIdForStakerAddress(address)` and selector `0x455636de` + ///Container type for all input parameters for the `getValidatorsInNextEpoch` function with signature `getValidatorsInNextEpoch(uint256)` and selector `0x84bc5324` #[derive( Clone, ::ethers::contract::EthCall, @@ -17839,13 +21050,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "getShadowRealmIdForStakerAddress", - abi = "getShadowRealmIdForStakerAddress(address)" + name = "getValidatorsInNextEpoch", + abi = "getValidatorsInNextEpoch(uint256)" )] - pub struct GetShadowRealmIdForStakerAddressCall { - pub staker_address: ::ethers::core::types::Address, + pub struct GetValidatorsInNextEpochCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getShadowValidators` function with signature `getShadowValidators(uint256)` and selector `0xcc090c8a` + ///Container type for all input parameters for the `getValidatorsStructs` function with signature `getValidatorsStructs(address[])` and selector `0x533d463e` #[derive( Clone, ::ethers::contract::EthCall, @@ -17858,11 +21069,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getShadowValidators", abi = "getShadowValidators(uint256)")] - pub struct GetShadowValidatorsCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall(name = "getValidatorsStructs", abi = "getValidatorsStructs(address[])")] + pub struct GetValidatorsStructsCall { + pub staker_addresses: ::std::vec::Vec<::ethers::core::types::Address>, } - ///Container type for all input parameters for the `getStakeRecord` function with signature `getStakeRecord(address,uint256,address)` and selector `0x114ed11d` + ///Container type for all input parameters for the `getValidatorsStructsInCurrentEpoch` function with signature `getValidatorsStructsInCurrentEpoch(uint256)` and selector `0xb0dee6c6` #[derive( Clone, ::ethers::contract::EthCall, @@ -17875,13 +21086,14 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getStakeRecord", abi = "getStakeRecord(address,uint256,address)")] - pub struct GetStakeRecordCall { - pub staker_address: ::ethers::core::types::Address, - pub record_id: ::ethers::core::types::U256, - pub user_staker_address: ::ethers::core::types::Address, + #[ethcall( + name = "getValidatorsStructsInCurrentEpoch", + abi = "getValidatorsStructsInCurrentEpoch(uint256)" + )] + pub struct GetValidatorsStructsInCurrentEpochCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getStakeRecordCount` function with signature `getStakeRecordCount(address,address)` and selector `0x125fc3d4` + ///Container type for all input parameters for the `getValidatorsStructsInNextEpoch` function with signature `getValidatorsStructsInNextEpoch(uint256)` and selector `0x183c5ff0` #[derive( Clone, ::ethers::contract::EthCall, @@ -17895,14 +21107,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "getStakeRecordCount", - abi = "getStakeRecordCount(address,address)" + name = "getValidatorsStructsInNextEpoch", + abi = "getValidatorsStructsInNextEpoch(uint256)" )] - pub struct GetStakeRecordCountCall { - pub user_staker_address: ::ethers::core::types::Address, - pub operator_staker_address: ::ethers::core::types::Address, + pub struct GetValidatorsStructsInNextEpochCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getStakeRecordsForUser` function with signature `getStakeRecordsForUser(address,address)` and selector `0xdc1fab7f` + ///Container type for all input parameters for the `getVotingStatusToKickValidator` function with signature `getVotingStatusToKickValidator(uint256,uint256,address,address)` and selector `0x3e1c3693` #[derive( Clone, ::ethers::contract::EthCall, @@ -17916,14 +21127,16 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "getStakeRecordsForUser", - abi = "getStakeRecordsForUser(address,address)" + name = "getVotingStatusToKickValidator", + abi = "getVotingStatusToKickValidator(uint256,uint256,address,address)" )] - pub struct GetStakeRecordsForUserCall { - pub user_staker_address: ::ethers::core::types::Address, - pub operator_staker_address: ::ethers::core::types::Address, + pub struct GetVotingStatusToKickValidatorCall { + pub realm_id: ::ethers::core::types::U256, + pub epoch_number: ::ethers::core::types::U256, + pub validator_to_be_kicked_staker_address: ::ethers::core::types::Address, + pub voter_staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getStakeWeightInEpoch` function with signature `getStakeWeightInEpoch(address,uint256,address,uint256)` and selector `0x580f68db` + ///Container type for all input parameters for the `globalConfig` function with signature `globalConfig()` and selector `0xa7c1abe0` #[derive( Clone, ::ethers::contract::EthCall, @@ -17936,17 +21149,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "getStakeWeightInEpoch", - abi = "getStakeWeightInEpoch(address,uint256,address,uint256)" - )] - pub struct GetStakeWeightInEpochCall { - pub staker_address: ::ethers::core::types::Address, - pub record_id: ::ethers::core::types::U256, - pub user_staker_address: ::ethers::core::types::Address, - pub reward_epoch_number: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `getThreshold` function with signature `getThreshold(uint256)` and selector `0x4615d5e9` + #[ethcall(name = "globalConfig", abi = "globalConfig()")] + pub struct GlobalConfigCall; + ///Container type for all input parameters for the `increaseRewardPool` function with signature `increaseRewardPool(uint256,uint256)` and selector `0x0c1ea985` #[derive( Clone, ::ethers::contract::EthCall, @@ -17959,11 +21164,12 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getThreshold", abi = "getThreshold(uint256)")] - pub struct GetThresholdCall { - pub node_count: ::ethers::core::types::U256, + #[ethcall(name = "increaseRewardPool", abi = "increaseRewardPool(uint256,uint256)")] + pub struct IncreaseRewardPoolCall { + pub realm_id: ::ethers::core::types::U256, + pub amount: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getTimelockInEpoch` function with signature `getTimelockInEpoch(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)` and selector `0x2db912e4` + ///Container type for all input parameters for the `increaseStakeRecordAmount` function with signature `increaseStakeRecordAmount(address,uint256,uint256)` and selector `0x61967297` #[derive( Clone, ::ethers::contract::EthCall, @@ -17977,15 +21183,15 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "getTimelockInEpoch", - abi = "getTimelockInEpoch(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)" + name = "increaseStakeRecordAmount", + abi = "increaseStakeRecordAmount(address,uint256,uint256)" )] - pub struct GetTimelockInEpochCall { + pub struct IncreaseStakeRecordAmountCall { pub staker_address: ::ethers::core::types::Address, - pub stake_record: StakeRecord, - pub reward_epoch_number: ::ethers::core::types::U256, + pub stake_record_id: ::ethers::core::types::U256, + pub additional_amount: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getTokenContractAddress` function with signature `getTokenContractAddress()` and selector `0x22e45584` + ///Container type for all input parameters for the `increaseStakeRecordTimelock` function with signature `increaseStakeRecordTimelock(address,uint256,uint256)` and selector `0xc5427758` #[derive( Clone, ::ethers::contract::EthCall, @@ -17998,9 +21204,16 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getTokenContractAddress", abi = "getTokenContractAddress()")] - pub struct GetTokenContractAddressCall; - ///Container type for all input parameters for the `getTokenPrice` function with signature `getTokenPrice()` and selector `0x4b94f50e` + #[ethcall( + name = "increaseStakeRecordTimelock", + abi = "increaseStakeRecordTimelock(address,uint256,uint256)" + )] + pub struct IncreaseStakeRecordTimelockCall { + pub staker_address: ::ethers::core::types::Address, + pub stake_record_id: ::ethers::core::types::U256, + pub additional_time_lock: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `initializeRewardEpoch` function with signature `initializeRewardEpoch(address,uint256,bool)` and selector `0x9654c473` #[derive( Clone, ::ethers::contract::EthCall, @@ -18013,9 +21226,16 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getTokenPrice", abi = "getTokenPrice()")] - pub struct GetTokenPriceCall; - ///Container type for all input parameters for the `getTokensStaked` function with signature `getTokensStaked(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)` and selector `0x0fd78304` + #[ethcall( + name = "initializeRewardEpoch", + abi = "initializeRewardEpoch(address,uint256,bool)" + )] + pub struct InitializeRewardEpochCall { + pub staker_address: ::ethers::core::types::Address, + pub reward_epoch_number: ::ethers::core::types::U256, + pub is_initial: bool, + } + ///Container type for all input parameters for the `isActiveShadowValidator` function with signature `isActiveShadowValidator(uint256,address)` and selector `0x7e7ae34c` #[derive( Clone, ::ethers::contract::EthCall, @@ -18029,15 +21249,14 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "getTokensStaked", - abi = "getTokensStaked(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)" + name = "isActiveShadowValidator", + abi = "isActiveShadowValidator(uint256,address)" )] - pub struct GetTokensStakedCall { + pub struct IsActiveShadowValidatorCall { + pub realm_id: ::ethers::core::types::U256, pub staker_address: ::ethers::core::types::Address, - pub stake_record: StakeRecord, - pub reward_epoch_number: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getTotalStake` function with signature `getTotalStake(address)` and selector `0x1e7ff8f6` + ///Container type for all input parameters for the `isActiveValidator` function with signature `isActiveValidator(uint256,address)` and selector `0xff347ae8` #[derive( Clone, ::ethers::contract::EthCall, @@ -18050,11 +21269,12 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getTotalStake", abi = "getTotalStake(address)")] - pub struct GetTotalStakeCall { + #[ethcall(name = "isActiveValidator", abi = "isActiveValidator(uint256,address)")] + pub struct IsActiveValidatorCall { + pub realm_id: ::ethers::core::types::U256, pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getTotalStakeByUser` function with signature `getTotalStakeByUser(address,address)` and selector `0xd349660a` + ///Container type for all input parameters for the `isActiveValidatorByNodeAddress` function with signature `isActiveValidatorByNodeAddress(uint256,address)` and selector `0x5064c127` #[derive( Clone, ::ethers::contract::EthCall, @@ -18068,14 +21288,14 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "getTotalStakeByUser", - abi = "getTotalStakeByUser(address,address)" + name = "isActiveValidatorByNodeAddress", + abi = "isActiveValidatorByNodeAddress(uint256,address)" )] - pub struct GetTotalStakeByUserCall { - pub staker_address: ::ethers::core::types::Address, - pub user: ::ethers::core::types::Address, + pub struct IsActiveValidatorByNodeAddressCall { + pub realm_id: ::ethers::core::types::U256, + pub account: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getTrustedForwarder` function with signature `getTrustedForwarder()` and selector `0xce1b815f` + ///Container type for all input parameters for the `isActiveValidatorByNodeAddressForNextEpoch` function with signature `isActiveValidatorByNodeAddressForNextEpoch(uint256,address)` and selector `0xeb8f2f27` #[derive( Clone, ::ethers::contract::EthCall, @@ -18088,9 +21308,15 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getTrustedForwarder", abi = "getTrustedForwarder()")] - pub struct GetTrustedForwarderCall; - ///Container type for all input parameters for the `getUnfrozenStakeCountForUser` function with signature `getUnfrozenStakeCountForUser(address,address)` and selector `0x5a0909fa` + #[ethcall( + name = "isActiveValidatorByNodeAddressForNextEpoch", + abi = "isActiveValidatorByNodeAddressForNextEpoch(uint256,address)" + )] + pub struct IsActiveValidatorByNodeAddressForNextEpochCall { + pub realm_id: ::ethers::core::types::U256, + pub node_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `isActiveValidatorForNextEpoch` function with signature `isActiveValidatorForNextEpoch(uint256,address)` and selector `0x26fc6f9b` #[derive( Clone, ::ethers::contract::EthCall, @@ -18104,14 +21330,14 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "getUnfrozenStakeCountForUser", - abi = "getUnfrozenStakeCountForUser(address,address)" - )] - pub struct GetUnfrozenStakeCountForUserCall { - pub user_staker_address: ::ethers::core::types::Address, - pub operator_staker_address: ::ethers::core::types::Address, + name = "isActiveValidatorForNextEpoch", + abi = "isActiveValidatorForNextEpoch(uint256,address)" + )] + pub struct IsActiveValidatorForNextEpochCall { + pub realm_id: ::ethers::core::types::U256, + pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getValidatorsDelegated` function with signature `getValidatorsDelegated(address)` and selector `0x5b2fcdcf` + ///Container type for all input parameters for the `isApprovedForAll` function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5` #[derive( Clone, ::ethers::contract::EthCall, @@ -18124,11 +21350,12 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getValidatorsDelegated", abi = "getValidatorsDelegated(address)")] - pub struct GetValidatorsDelegatedCall { - pub user: ::ethers::core::types::Address, + #[ethcall(name = "isApprovedForAll", abi = "isApprovedForAll(address,address)")] + pub struct IsApprovedForAllCall { + pub owner: ::ethers::core::types::Address, + pub operator: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getValidatorsInCurrentEpoch` function with signature `getValidatorsInCurrentEpoch(uint256)` and selector `0xeccd9e0e` + ///Container type for all input parameters for the `isReadyForNextEpoch` function with signature `isReadyForNextEpoch(uint256)` and selector `0x7fecc451` #[derive( Clone, ::ethers::contract::EthCall, @@ -18141,14 +21368,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "getValidatorsInCurrentEpoch", - abi = "getValidatorsInCurrentEpoch(uint256)" - )] - pub struct GetValidatorsInCurrentEpochCall { + #[ethcall(name = "isReadyForNextEpoch", abi = "isReadyForNextEpoch(uint256)")] + pub struct IsReadyForNextEpochCall { pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getValidatorsInNextEpoch` function with signature `getValidatorsInNextEpoch(uint256)` and selector `0x84bc5324` + ///Container type for all input parameters for the `isRecentValidator` function with signature `isRecentValidator(address)` and selector `0x3c2ef732` #[derive( Clone, ::ethers::contract::EthCall, @@ -18161,14 +21385,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "getValidatorsInNextEpoch", - abi = "getValidatorsInNextEpoch(uint256)" - )] - pub struct GetValidatorsInNextEpochCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall(name = "isRecentValidator", abi = "isRecentValidator(address)")] + pub struct IsRecentValidatorCall { + pub node_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getValidatorsStructs` function with signature `getValidatorsStructs(address[])` and selector `0x533d463e` + ///Container type for all input parameters for the `isRecentValidator` function with signature `isRecentValidator(uint256,address)` and selector `0xc974c355` #[derive( Clone, ::ethers::contract::EthCall, @@ -18181,11 +21402,12 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "getValidatorsStructs", abi = "getValidatorsStructs(address[])")] - pub struct GetValidatorsStructsCall { - pub staker_addresses: ::std::vec::Vec<::ethers::core::types::Address>, + #[ethcall(name = "isRecentValidator", abi = "isRecentValidator(uint256,address)")] + pub struct IsRecentValidatorWithRealmIdCall { + pub realm_id: ::ethers::core::types::U256, + pub staker_addresses: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getValidatorsStructsInCurrentEpoch` function with signature `getValidatorsStructsInCurrentEpoch(uint256)` and selector `0xb0dee6c6` + ///Container type for all input parameters for the `isValidatorBanned` function with signature `isValidatorBanned(address)` and selector `0xa92252ae` #[derive( Clone, ::ethers::contract::EthCall, @@ -18198,14 +21420,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "getValidatorsStructsInCurrentEpoch", - abi = "getValidatorsStructsInCurrentEpoch(uint256)" - )] - pub struct GetValidatorsStructsInCurrentEpochCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall(name = "isValidatorBanned", abi = "isValidatorBanned(address)")] + pub struct IsValidatorBannedCall { + pub validator: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getValidatorsStructsInNextEpoch` function with signature `getValidatorsStructsInNextEpoch(uint256)` and selector `0x183c5ff0` + ///Container type for all input parameters for the `isValidatorInCurrentEpoch` function with signature `isValidatorInCurrentEpoch(address)` and selector `0xdf8a171f` #[derive( Clone, ::ethers::contract::EthCall, @@ -18219,13 +21438,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "getValidatorsStructsInNextEpoch", - abi = "getValidatorsStructsInNextEpoch(uint256)" + name = "isValidatorInCurrentEpoch", + abi = "isValidatorInCurrentEpoch(address)" )] - pub struct GetValidatorsStructsInNextEpochCall { - pub realm_id: ::ethers::core::types::U256, + pub struct IsValidatorInCurrentEpochCall { + pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getVotingStatusToKickValidator` function with signature `getVotingStatusToKickValidator(uint256,uint256,address,address)` and selector `0x3e1c3693` + ///Container type for all input parameters for the `isValidatorInCurrentOrNextEpoch` function with signature `isValidatorInCurrentOrNextEpoch(address)` and selector `0x81b9beb7` #[derive( Clone, ::ethers::contract::EthCall, @@ -18239,16 +21458,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "getVotingStatusToKickValidator", - abi = "getVotingStatusToKickValidator(uint256,uint256,address,address)" + name = "isValidatorInCurrentOrNextEpoch", + abi = "isValidatorInCurrentOrNextEpoch(address)" )] - pub struct GetVotingStatusToKickValidatorCall { - pub realm_id: ::ethers::core::types::U256, - pub epoch_number: ::ethers::core::types::U256, - pub validator_to_be_kicked_staker_address: ::ethers::core::types::Address, - pub voter_staker_address: ::ethers::core::types::Address, + pub struct IsValidatorInCurrentOrNextEpochCall { + pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `globalConfig` function with signature `globalConfig()` and selector `0xa7c1abe0` + ///Container type for all input parameters for the `isValidatorInNextEpoch` function with signature `isValidatorInNextEpoch(address)` and selector `0xad0466a6` #[derive( Clone, ::ethers::contract::EthCall, @@ -18261,9 +21477,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "globalConfig", abi = "globalConfig()")] - pub struct GlobalConfigCall; - ///Container type for all input parameters for the `increaseRewardPool` function with signature `increaseRewardPool(uint256,uint256)` and selector `0x0c1ea985` + #[ethcall(name = "isValidatorInNextEpoch", abi = "isValidatorInNextEpoch(address)")] + pub struct IsValidatorInNextEpochCall { + pub staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `keySets` function with signature `keySets()` and selector `0xdce90405` #[derive( Clone, ::ethers::contract::EthCall, @@ -18276,12 +21494,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "increaseRewardPool", abi = "increaseRewardPool(uint256,uint256)")] - pub struct IncreaseRewardPoolCall { - pub realm_id: ::ethers::core::types::U256, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `increaseStakeRecordAmount` function with signature `increaseStakeRecordAmount(address,uint256,uint256)` and selector `0x61967297` + #[ethcall(name = "keySets", abi = "keySets()")] + pub struct KeySetsCall; + ///Container type for all input parameters for the `kickPenaltyPercentByReason` function with signature `kickPenaltyPercentByReason(uint256)` and selector `0x3e685266` #[derive( Clone, ::ethers::contract::EthCall, @@ -18295,15 +21510,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "increaseStakeRecordAmount", - abi = "increaseStakeRecordAmount(address,uint256,uint256)" + name = "kickPenaltyPercentByReason", + abi = "kickPenaltyPercentByReason(uint256)" )] - pub struct IncreaseStakeRecordAmountCall { - pub staker_address: ::ethers::core::types::Address, - pub stake_record_id: ::ethers::core::types::U256, - pub additional_amount: ::ethers::core::types::U256, + pub struct KickPenaltyPercentByReasonCall { + pub reason: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `increaseStakeRecordTimelock` function with signature `increaseStakeRecordTimelock(address,uint256,uint256)` and selector `0xc5427758` + ///Container type for all input parameters for the `kickValidatorInNextEpoch` function with signature `kickValidatorInNextEpoch(address,uint256,bytes)` and selector `0x865419e9` #[derive( Clone, ::ethers::contract::EthCall, @@ -18317,15 +21530,15 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "increaseStakeRecordTimelock", - abi = "increaseStakeRecordTimelock(address,uint256,uint256)" + name = "kickValidatorInNextEpoch", + abi = "kickValidatorInNextEpoch(address,uint256,bytes)" )] - pub struct IncreaseStakeRecordTimelockCall { - pub staker_address: ::ethers::core::types::Address, - pub stake_record_id: ::ethers::core::types::U256, - pub additional_time_lock: ::ethers::core::types::U256, + pub struct KickValidatorInNextEpochCall { + pub validator_to_kick_staker_address: ::ethers::core::types::Address, + pub reason: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, } - ///Container type for all input parameters for the `initializeRewardEpoch` function with signature `initializeRewardEpoch(address,uint256,bool)` and selector `0x9654c473` + ///Container type for all input parameters for the `litActionsConfig` function with signature `litActionsConfig(uint256)` and selector `0xe3dfd1f5` #[derive( Clone, ::ethers::contract::EthCall, @@ -18338,16 +21551,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "initializeRewardEpoch", - abi = "initializeRewardEpoch(address,uint256,bool)" - )] - pub struct InitializeRewardEpochCall { - pub staker_address: ::ethers::core::types::Address, - pub reward_epoch_number: ::ethers::core::types::U256, - pub is_initial: bool, + #[ethcall(name = "litActionsConfig", abi = "litActionsConfig(uint256)")] + pub struct LitActionsConfigCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `isActiveShadowValidator` function with signature `isActiveShadowValidator(uint256,address)` and selector `0x7e7ae34c` + ///Container type for all input parameters for the `lockValidatorsForNextEpoch` function with signature `lockValidatorsForNextEpoch(uint256)` and selector `0x45c1b1fb` #[derive( Clone, ::ethers::contract::EthCall, @@ -18361,14 +21569,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "isActiveShadowValidator", - abi = "isActiveShadowValidator(uint256,address)" + name = "lockValidatorsForNextEpoch", + abi = "lockValidatorsForNextEpoch(uint256)" )] - pub struct IsActiveShadowValidatorCall { + pub struct LockValidatorsForNextEpochCall { pub realm_id: ::ethers::core::types::U256, - pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `isActiveValidator` function with signature `isActiveValidator(uint256,address)` and selector `0xff347ae8` + ///Container type for all input parameters for the `maxStake` function with signature `maxStake()` and selector `0xea1b28e0` #[derive( Clone, ::ethers::contract::EthCall, @@ -18381,12 +21588,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "isActiveValidator", abi = "isActiveValidator(uint256,address)")] - pub struct IsActiveValidatorCall { - pub realm_id: ::ethers::core::types::U256, - pub staker_address: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `isActiveValidatorByNodeAddress` function with signature `isActiveValidatorByNodeAddress(uint256,address)` and selector `0x5064c127` + #[ethcall(name = "maxStake", abi = "maxStake()")] + pub struct MaxStakeCall; + ///Container type for all input parameters for the `maxTimeLock` function with signature `maxTimeLock()` and selector `0xe1cf73b9` #[derive( Clone, ::ethers::contract::EthCall, @@ -18399,15 +21603,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "isActiveValidatorByNodeAddress", - abi = "isActiveValidatorByNodeAddress(uint256,address)" - )] - pub struct IsActiveValidatorByNodeAddressCall { - pub realm_id: ::ethers::core::types::U256, - pub account: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `isActiveValidatorByNodeAddressForNextEpoch` function with signature `isActiveValidatorByNodeAddressForNextEpoch(uint256,address)` and selector `0xeb8f2f27` + #[ethcall(name = "maxTimeLock", abi = "maxTimeLock()")] + pub struct MaxTimeLockCall; + ///Container type for all input parameters for the `migrateStakeRecord` function with signature `migrateStakeRecord(address,uint256,address)` and selector `0x4048b256` #[derive( Clone, ::ethers::contract::EthCall, @@ -18421,14 +21619,15 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "isActiveValidatorByNodeAddressForNextEpoch", - abi = "isActiveValidatorByNodeAddressForNextEpoch(uint256,address)" + name = "migrateStakeRecord", + abi = "migrateStakeRecord(address,uint256,address)" )] - pub struct IsActiveValidatorByNodeAddressForNextEpochCall { - pub realm_id: ::ethers::core::types::U256, - pub node_address: ::ethers::core::types::Address, + pub struct MigrateStakeRecordCall { + pub operator_address_to_migrate_from: ::ethers::core::types::Address, + pub stake_record_id: ::ethers::core::types::U256, + pub operator_address_to_migrate_to: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `isActiveValidatorForNextEpoch` function with signature `isActiveValidatorForNextEpoch(uint256,address)` and selector `0x26fc6f9b` + ///Container type for all input parameters for the `minSelfStake` function with signature `minSelfStake()` and selector `0xc5f530af` #[derive( Clone, ::ethers::contract::EthCall, @@ -18441,15 +21640,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "isActiveValidatorForNextEpoch", - abi = "isActiveValidatorForNextEpoch(uint256,address)" - )] - pub struct IsActiveValidatorForNextEpochCall { - pub realm_id: ::ethers::core::types::U256, - pub staker_address: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `isApprovedForAll` function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5` + #[ethcall(name = "minSelfStake", abi = "minSelfStake()")] + pub struct MinSelfStakeCall; + ///Container type for all input parameters for the `minStake` function with signature `minStake()` and selector `0x375b3c0a` #[derive( Clone, ::ethers::contract::EthCall, @@ -18462,12 +21655,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "isApprovedForAll", abi = "isApprovedForAll(address,address)")] - pub struct IsApprovedForAllCall { - pub owner: ::ethers::core::types::Address, - pub operator: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `isReadyForNextEpoch` function with signature `isReadyForNextEpoch(uint256)` and selector `0x7fecc451` + #[ethcall(name = "minStake", abi = "minStake()")] + pub struct MinStakeCall; + ///Container type for all input parameters for the `minTimeLock` function with signature `minTimeLock()` and selector `0xd00a818f` #[derive( Clone, ::ethers::contract::EthCall, @@ -18480,11 +21670,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "isReadyForNextEpoch", abi = "isReadyForNextEpoch(uint256)")] - pub struct IsReadyForNextEpochCall { - pub realm_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `isRecentValidator` function with signature `isRecentValidator(address)` and selector `0x3c2ef732` + #[ethcall(name = "minTimeLock", abi = "minTimeLock()")] + pub struct MinTimeLockCall; + ///Container type for all input parameters for the `nextValidatorCountForConsensus` function with signature `nextValidatorCountForConsensus(uint256)` and selector `0xa8b89564` #[derive( Clone, ::ethers::contract::EthCall, @@ -18497,11 +21685,14 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "isRecentValidator", abi = "isRecentValidator(address)")] - pub struct IsRecentValidatorCall { - pub node_address: ::ethers::core::types::Address, + #[ethcall( + name = "nextValidatorCountForConsensus", + abi = "nextValidatorCountForConsensus(uint256)" + )] + pub struct NextValidatorCountForConsensusCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `isRecentValidator` function with signature `isRecentValidator(uint256,address)` and selector `0xc974c355` + ///Container type for all input parameters for the `nodeAddressToStakerAddress` function with signature `nodeAddressToStakerAddress(address)` and selector `0x5081f66f` #[derive( Clone, ::ethers::contract::EthCall, @@ -18514,12 +21705,14 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "isRecentValidator", abi = "isRecentValidator(uint256,address)")] - pub struct IsRecentValidatorWithRealmIdCall { - pub realm_id: ::ethers::core::types::U256, - pub staker_addresses: ::ethers::core::types::Address, + #[ethcall( + name = "nodeAddressToStakerAddress", + abi = "nodeAddressToStakerAddress(address)" + )] + pub struct NodeAddressToStakerAddressCall { + pub node_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `isValidatorBanned` function with signature `isValidatorBanned(address)` and selector `0xa92252ae` + ///Container type for all input parameters for the `nodeAddressToStakerAddressAcrossRealms` function with signature `nodeAddressToStakerAddressAcrossRealms(address)` and selector `0x86b01dd6` #[derive( Clone, ::ethers::contract::EthCall, @@ -18532,11 +21725,14 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "isValidatorBanned", abi = "isValidatorBanned(address)")] - pub struct IsValidatorBannedCall { - pub validator: ::ethers::core::types::Address, + #[ethcall( + name = "nodeAddressToStakerAddressAcrossRealms", + abi = "nodeAddressToStakerAddressAcrossRealms(address)" + )] + pub struct NodeAddressToStakerAddressAcrossRealmsCall { + pub node_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `isValidatorInCurrentEpoch` function with signature `isValidatorInCurrentEpoch(address)` and selector `0xdf8a171f` + ///Container type for all input parameters for the `numRealms` function with signature `numRealms()` and selector `0xfc14e3b9` #[derive( Clone, ::ethers::contract::EthCall, @@ -18549,14 +21745,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "isValidatorInCurrentEpoch", - abi = "isValidatorInCurrentEpoch(address)" - )] - pub struct IsValidatorInCurrentEpochCall { - pub staker_address: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `isValidatorInCurrentOrNextEpoch` function with signature `isValidatorInCurrentOrNextEpoch(address)` and selector `0x81b9beb7` + #[ethcall(name = "numRealms", abi = "numRealms()")] + pub struct NumRealmsCall; + ///Container type for all input parameters for the `operatorAddressToStakerAddress` function with signature `operatorAddressToStakerAddress(address)` and selector `0xab8ccfbe` #[derive( Clone, ::ethers::contract::EthCall, @@ -18570,13 +21761,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "isValidatorInCurrentOrNextEpoch", - abi = "isValidatorInCurrentOrNextEpoch(address)" + name = "operatorAddressToStakerAddress", + abi = "operatorAddressToStakerAddress(address)" )] - pub struct IsValidatorInCurrentOrNextEpochCall { - pub staker_address: ::ethers::core::types::Address, + pub struct OperatorAddressToStakerAddressCall { + pub operator_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `isValidatorInNextEpoch` function with signature `isValidatorInNextEpoch(address)` and selector `0xad0466a6` + ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` #[derive( Clone, ::ethers::contract::EthCall, @@ -18589,11 +21780,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "isValidatorInNextEpoch", abi = "isValidatorInNextEpoch(address)")] - pub struct IsValidatorInNextEpochCall { - pub staker_address: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `keySets` function with signature `keySets()` and selector `0xdce90405` + #[ethcall(name = "owner", abi = "owner()")] + pub struct OwnerCall; + ///Container type for all input parameters for the `ownerOf` function with signature `ownerOf(uint256)` and selector `0x6352211e` #[derive( Clone, ::ethers::contract::EthCall, @@ -18606,9 +21795,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "keySets", abi = "keySets()")] - pub struct KeySetsCall; - ///Container type for all input parameters for the `kickPenaltyPercentByReason` function with signature `kickPenaltyPercentByReason(uint256)` and selector `0x3e685266` + #[ethcall(name = "ownerOf", abi = "ownerOf(uint256)")] + pub struct OwnerOfCall { + pub token_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `ownershipChange` function with signature `ownershipChange(uint256)` and selector `0x23857d51` #[derive( Clone, ::ethers::contract::EthCall, @@ -18621,14 +21812,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "kickPenaltyPercentByReason", - abi = "kickPenaltyPercentByReason(uint256)" - )] - pub struct KickPenaltyPercentByReasonCall { - pub reason: ::ethers::core::types::U256, + #[ethcall(name = "ownershipChange", abi = "ownershipChange(uint256)")] + pub struct OwnershipChangeCall { + pub token_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `kickValidatorInNextEpoch` function with signature `kickValidatorInNextEpoch(address,uint256,bytes)` and selector `0x865419e9` + ///Container type for all input parameters for the `permittedRealmsForValidator` function with signature `permittedRealmsForValidator(address)` and selector `0xe718ff4c` #[derive( Clone, ::ethers::contract::EthCall, @@ -18642,15 +21830,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "kickValidatorInNextEpoch", - abi = "kickValidatorInNextEpoch(address,uint256,bytes)" + name = "permittedRealmsForValidator", + abi = "permittedRealmsForValidator(address)" )] - pub struct KickValidatorInNextEpochCall { - pub validator_to_kick_staker_address: ::ethers::core::types::Address, - pub reason: ::ethers::core::types::U256, - pub data: ::ethers::core::types::Bytes, + pub struct PermittedRealmsForValidatorCall { + pub validator: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `litActionsConfig` function with signature `litActionsConfig(uint256)` and selector `0xe3dfd1f5` + ///Container type for all input parameters for the `permittedValidators` function with signature `permittedValidators(uint256)` and selector `0x58488c31` #[derive( Clone, ::ethers::contract::EthCall, @@ -18663,11 +21849,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "litActionsConfig", abi = "litActionsConfig(uint256)")] - pub struct LitActionsConfigCall { + #[ethcall(name = "permittedValidators", abi = "permittedValidators(uint256)")] + pub struct PermittedValidatorsCall { pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `lockValidatorsForNextEpoch` function with signature `lockValidatorsForNextEpoch(uint256)` and selector `0x45c1b1fb` + ///Container type for all input parameters for the `pow` function with signature `pow(uint256,uint256)` and selector `0x2e4c697f` #[derive( Clone, ::ethers::contract::EthCall, @@ -18680,14 +21866,12 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "lockValidatorsForNextEpoch", - abi = "lockValidatorsForNextEpoch(uint256)" - )] - pub struct LockValidatorsForNextEpochCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall(name = "pow", abi = "pow(uint256,uint256)")] + pub struct PowCall { + pub base: ::ethers::core::types::U256, + pub exponent: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `maxStake` function with signature `maxStake()` and selector `0xea1b28e0` + ///Container type for all input parameters for the `readyForNextEpoch` function with signature `readyForNextEpoch(uint256,address)` and selector `0xf2c5b908` #[derive( Clone, ::ethers::contract::EthCall, @@ -18700,9 +21884,12 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "maxStake", abi = "maxStake()")] - pub struct MaxStakeCall; - ///Container type for all input parameters for the `maxTimeLock` function with signature `maxTimeLock()` and selector `0xe1cf73b9` + #[ethcall(name = "readyForNextEpoch", abi = "readyForNextEpoch(uint256,address)")] + pub struct ReadyForNextEpochCall { + pub realm_id: ::ethers::core::types::U256, + pub staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `realmConfig` function with signature `realmConfig(uint256)` and selector `0xe56cfb79` #[derive( Clone, ::ethers::contract::EthCall, @@ -18715,9 +21902,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "maxTimeLock", abi = "maxTimeLock()")] - pub struct MaxTimeLockCall; - ///Container type for all input parameters for the `migrateStakeRecord` function with signature `migrateStakeRecord(address,uint256,address)` and selector `0x4048b256` + #[ethcall(name = "realmConfig", abi = "realmConfig(uint256)")] + pub struct RealmConfigCall { + pub realm_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `registerAttestedWallet` function with signature `registerAttestedWallet(address,address,bytes,uint256,uint256)` and selector `0x4aea5542` #[derive( Clone, ::ethers::contract::EthCall, @@ -18731,15 +21920,17 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "migrateStakeRecord", - abi = "migrateStakeRecord(address,uint256,address)" + name = "registerAttestedWallet", + abi = "registerAttestedWallet(address,address,bytes,uint256,uint256)" )] - pub struct MigrateStakeRecordCall { - pub operator_address_to_migrate_from: ::ethers::core::types::Address, - pub stake_record_id: ::ethers::core::types::U256, - pub operator_address_to_migrate_to: ::ethers::core::types::Address, + pub struct RegisterAttestedWalletCall { + pub staker_address: ::ethers::core::types::Address, + pub attested_address: ::ethers::core::types::Address, + pub attested_pub_key: ::ethers::core::types::Bytes, + pub sender_pub_key: ::ethers::core::types::U256, + pub receiver_pub_key: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `minSelfStake` function with signature `minSelfStake()` and selector `0xc5f530af` + ///Container type for all input parameters for the `removeRealm` function with signature `removeRealm(uint256)` and selector `0xd2baca55` #[derive( Clone, ::ethers::contract::EthCall, @@ -18752,9 +21943,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "minSelfStake", abi = "minSelfStake()")] - pub struct MinSelfStakeCall; - ///Container type for all input parameters for the `minStake` function with signature `minStake()` and selector `0x375b3c0a` + #[ethcall(name = "removeRealm", abi = "removeRealm(uint256)")] + pub struct RemoveRealmCall { + pub realm_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `requestToJoin` function with signature `requestToJoin(uint256)` and selector `0x84022767` #[derive( Clone, ::ethers::contract::EthCall, @@ -18767,9 +21960,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "minStake", abi = "minStake()")] - pub struct MinStakeCall; - ///Container type for all input parameters for the `minTimeLock` function with signature `minTimeLock()` and selector `0xd00a818f` + #[ethcall(name = "requestToJoin", abi = "requestToJoin(uint256)")] + pub struct RequestToJoinCall { + pub realm_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `requestToJoinAsAdmin` function with signature `requestToJoinAsAdmin(uint256,address)` and selector `0xca005066` #[derive( Clone, ::ethers::contract::EthCall, @@ -18782,9 +21977,15 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "minTimeLock", abi = "minTimeLock()")] - pub struct MinTimeLockCall; - ///Container type for all input parameters for the `nextValidatorCountForConsensus` function with signature `nextValidatorCountForConsensus(uint256)` and selector `0xa8b89564` + #[ethcall( + name = "requestToJoinAsAdmin", + abi = "requestToJoinAsAdmin(uint256,address)" + )] + pub struct RequestToJoinAsAdminCall { + pub realm_id: ::ethers::core::types::U256, + pub staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `requestToJoinAsForShadowSplicing` function with signature `requestToJoinAsForShadowSplicing(uint256,address)` and selector `0x9a1dc1b5` #[derive( Clone, ::ethers::contract::EthCall, @@ -18798,13 +21999,14 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "nextValidatorCountForConsensus", - abi = "nextValidatorCountForConsensus(uint256)" + name = "requestToJoinAsForShadowSplicing", + abi = "requestToJoinAsForShadowSplicing(uint256,address)" )] - pub struct NextValidatorCountForConsensusCall { + pub struct RequestToJoinAsForShadowSplicingCall { pub realm_id: ::ethers::core::types::U256, + pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `nodeAddressToStakerAddress` function with signature `nodeAddressToStakerAddress(address)` and selector `0x5081f66f` + ///Container type for all input parameters for the `requestToJoinAsNode` function with signature `requestToJoinAsNode(uint256,address)` and selector `0x5b7204fa` #[derive( Clone, ::ethers::contract::EthCall, @@ -18818,13 +22020,14 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "nodeAddressToStakerAddress", - abi = "nodeAddressToStakerAddress(address)" + name = "requestToJoinAsNode", + abi = "requestToJoinAsNode(uint256,address)" )] - pub struct NodeAddressToStakerAddressCall { - pub node_address: ::ethers::core::types::Address, + pub struct RequestToJoinAsNodeCall { + pub realm_id: ::ethers::core::types::U256, + pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `nodeAddressToStakerAddressAcrossRealms` function with signature `nodeAddressToStakerAddressAcrossRealms(address)` and selector `0x86b01dd6` + ///Container type for all input parameters for the `requestToLeave` function with signature `requestToLeave()` and selector `0xac2f8afe` #[derive( Clone, ::ethers::contract::EthCall, @@ -18837,14 +22040,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "nodeAddressToStakerAddressAcrossRealms", - abi = "nodeAddressToStakerAddressAcrossRealms(address)" - )] - pub struct NodeAddressToStakerAddressAcrossRealmsCall { - pub node_address: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `numRealms` function with signature `numRealms()` and selector `0xfc14e3b9` + #[ethcall(name = "requestToLeave", abi = "requestToLeave()")] + pub struct RequestToLeaveCall; + ///Container type for all input parameters for the `requestToLeaveAsNode` function with signature `requestToLeaveAsNode(uint256)` and selector `0xc6f04cbb` #[derive( Clone, ::ethers::contract::EthCall, @@ -18857,9 +22055,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "numRealms", abi = "numRealms()")] - pub struct NumRealmsCall; - ///Container type for all input parameters for the `operatorAddressToStakerAddress` function with signature `operatorAddressToStakerAddress(address)` and selector `0xab8ccfbe` + #[ethcall(name = "requestToLeaveAsNode", abi = "requestToLeaveAsNode(uint256)")] + pub struct RequestToLeaveAsNodeCall { + pub realm_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256)` and selector `0x42842e0e` #[derive( Clone, ::ethers::contract::EthCall, @@ -18873,13 +22073,15 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "operatorAddressToStakerAddress", - abi = "operatorAddressToStakerAddress(address)" + name = "safeTransferFrom", + abi = "safeTransferFrom(address,address,uint256)" )] - pub struct OperatorAddressToStakerAddressCall { - pub operator_address: ::ethers::core::types::Address, + pub struct SafeTransferFromCall { + pub from: ::ethers::core::types::Address, + pub to: ::ethers::core::types::Address, + pub token_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` + ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256,bytes)` and selector `0xb88d4fde` #[derive( Clone, ::ethers::contract::EthCall, @@ -18892,9 +22094,17 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the `ownerOf` function with signature `ownerOf(uint256)` and selector `0x6352211e` + #[ethcall( + name = "safeTransferFrom", + abi = "safeTransferFrom(address,address,uint256,bytes)" + )] + pub struct SafeTransferFromWithFromAndToAndDataCall { + pub from: ::ethers::core::types::Address, + pub to: ::ethers::core::types::Address, + pub token_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `selfStakeBalanceOf` function with signature `selfStakeBalanceOf(address)` and selector `0xeddf837a` #[derive( Clone, ::ethers::contract::EthCall, @@ -18907,11 +22117,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "ownerOf", abi = "ownerOf(uint256)")] - pub struct OwnerOfCall { - pub token_id: ::ethers::core::types::U256, + #[ethcall(name = "selfStakeBalanceOf", abi = "selfStakeBalanceOf(address)")] + pub struct SelfStakeBalanceOfCall { + pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `ownershipChange` function with signature `ownershipChange(uint256)` and selector `0x23857d51` + ///Container type for all input parameters for the `setApprovalForAll` function with signature `setApprovalForAll(address,bool)` and selector `0xa22cb465` #[derive( Clone, ::ethers::contract::EthCall, @@ -18924,11 +22134,12 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "ownershipChange", abi = "ownershipChange(uint256)")] - pub struct OwnershipChangeCall { - pub token_id: ::ethers::core::types::U256, + #[ethcall(name = "setApprovalForAll", abi = "setApprovalForAll(address,bool)")] + pub struct SetApprovalForAllCall { + pub operator: ::ethers::core::types::Address, + pub approved: bool, } - ///Container type for all input parameters for the `permittedRealmsForValidator` function with signature `permittedRealmsForValidator(address)` and selector `0xe718ff4c` + ///Container type for all input parameters for the `setComplaintConfig` function with signature `setComplaintConfig(uint256,(uint256,uint256,uint256,uint256))` and selector `0x440e8d22` #[derive( Clone, ::ethers::contract::EthCall, @@ -18942,13 +22153,29 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "permittedRealmsForValidator", - abi = "permittedRealmsForValidator(address)" + name = "setComplaintConfig", + abi = "setComplaintConfig(uint256,(uint256,uint256,uint256,uint256))" )] - pub struct PermittedRealmsForValidatorCall { - pub validator: ::ethers::core::types::Address, + pub struct SetComplaintConfigCall { + pub reason: ::ethers::core::types::U256, + pub config: ComplaintConfig, } - ///Container type for all input parameters for the `permittedValidators` function with signature `permittedValidators(uint256)` and selector `0x58488c31` + ///Container type for all input parameters for the `setConfig` function with signature `setConfig((uint256,uint256[],uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))` and selector `0x077b0d40` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + )] + #[ethcall( + name = "setConfig", + abi = "setConfig((uint256,uint256[],uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))" + )] + pub struct SetConfigCall { + pub new_config: GlobalConfig, + } + ///Container type for all input parameters for the `setContractResolver` function with signature `setContractResolver(address)` and selector `0xf95d71b1` #[derive( Clone, ::ethers::contract::EthCall, @@ -18961,11 +22188,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "permittedValidators", abi = "permittedValidators(uint256)")] - pub struct PermittedValidatorsCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall(name = "setContractResolver", abi = "setContractResolver(address)")] + pub struct SetContractResolverCall { + pub new_resolver_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `pow` function with signature `pow(uint256,uint256)` and selector `0x2e4c697f` + ///Container type for all input parameters for the `setDemeritRejoinThreshold` function with signature `setDemeritRejoinThreshold(uint256)` and selector `0x2531431b` #[derive( Clone, ::ethers::contract::EthCall, @@ -18978,12 +22205,14 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "pow", abi = "pow(uint256,uint256)")] - pub struct PowCall { - pub base: ::ethers::core::types::U256, - pub exponent: ::ethers::core::types::U256, + #[ethcall( + name = "setDemeritRejoinThreshold", + abi = "setDemeritRejoinThreshold(uint256)" + )] + pub struct SetDemeritRejoinThresholdCall { + pub new_threshold: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `readyForNextEpoch` function with signature `readyForNextEpoch(uint256,address)` and selector `0xf2c5b908` + ///Container type for all input parameters for the `setDevopsAdmin` function with signature `setDevopsAdmin(address)` and selector `0xcf7d1e87` #[derive( Clone, ::ethers::contract::EthCall, @@ -18996,12 +22225,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "readyForNextEpoch", abi = "readyForNextEpoch(uint256,address)")] - pub struct ReadyForNextEpochCall { - pub realm_id: ::ethers::core::types::U256, - pub staker_address: ::ethers::core::types::Address, + #[ethcall(name = "setDevopsAdmin", abi = "setDevopsAdmin(address)")] + pub struct SetDevopsAdminCall { + pub new_devops_admin: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `realmConfig` function with signature `realmConfig(uint256)` and selector `0xe56cfb79` + ///Container type for all input parameters for the `setEpochEndTime` function with signature `setEpochEndTime(uint256,uint256)` and selector `0x5a7e6c22` #[derive( Clone, ::ethers::contract::EthCall, @@ -19014,11 +22242,12 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "realmConfig", abi = "realmConfig(uint256)")] - pub struct RealmConfigCall { + #[ethcall(name = "setEpochEndTime", abi = "setEpochEndTime(uint256,uint256)")] + pub struct SetEpochEndTimeCall { pub realm_id: ::ethers::core::types::U256, + pub new_epoch_end_time: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `registerAttestedWallet` function with signature `registerAttestedWallet(address,address,bytes,uint256,uint256)` and selector `0x4aea5542` + ///Container type for all input parameters for the `setEpochLength` function with signature `setEpochLength(uint256,uint256)` and selector `0xeb57bafb` #[derive( Clone, ::ethers::contract::EthCall, @@ -19031,18 +22260,12 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "registerAttestedWallet", - abi = "registerAttestedWallet(address,address,bytes,uint256,uint256)" - )] - pub struct RegisterAttestedWalletCall { - pub staker_address: ::ethers::core::types::Address, - pub attested_address: ::ethers::core::types::Address, - pub attested_pub_key: ::ethers::core::types::Bytes, - pub sender_pub_key: ::ethers::core::types::U256, - pub receiver_pub_key: ::ethers::core::types::U256, + #[ethcall(name = "setEpochLength", abi = "setEpochLength(uint256,uint256)")] + pub struct SetEpochLengthCall { + pub realm_id: ::ethers::core::types::U256, + pub new_epoch_length: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `removeRealm` function with signature `removeRealm(uint256)` and selector `0xd2baca55` + ///Container type for all input parameters for the `setEpochState` function with signature `setEpochState(uint256,uint8)` and selector `0x7a802454` #[derive( Clone, ::ethers::contract::EthCall, @@ -19055,11 +22278,12 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "removeRealm", abi = "removeRealm(uint256)")] - pub struct RemoveRealmCall { + #[ethcall(name = "setEpochState", abi = "setEpochState(uint256,uint8)")] + pub struct SetEpochStateCall { pub realm_id: ::ethers::core::types::U256, + pub new_state: u8, } - ///Container type for all input parameters for the `requestToJoin` function with signature `requestToJoin(uint256)` and selector `0x84022767` + ///Container type for all input parameters for the `setEpochTimeout` function with signature `setEpochTimeout(uint256,uint256)` and selector `0x0c9d5399` #[derive( Clone, ::ethers::contract::EthCall, @@ -19072,11 +22296,12 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "requestToJoin", abi = "requestToJoin(uint256)")] - pub struct RequestToJoinCall { + #[ethcall(name = "setEpochTimeout", abi = "setEpochTimeout(uint256,uint256)")] + pub struct SetEpochTimeoutCall { pub realm_id: ::ethers::core::types::U256, + pub new_epoch_timeout: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `requestToJoinAsAdmin` function with signature `requestToJoinAsAdmin(uint256,address)` and selector `0xca005066` + ///Container type for all input parameters for the `setIpPortNodeAddress` function with signature `setIpPortNodeAddress(uint32,uint128,uint32,address)` and selector `0x2c80b549` #[derive( Clone, ::ethers::contract::EthCall, @@ -19090,14 +22315,16 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "requestToJoinAsAdmin", - abi = "requestToJoinAsAdmin(uint256,address)" + name = "setIpPortNodeAddress", + abi = "setIpPortNodeAddress(uint32,uint128,uint32,address)" )] - pub struct RequestToJoinAsAdminCall { - pub realm_id: ::ethers::core::types::U256, - pub staker_address: ::ethers::core::types::Address, + pub struct SetIpPortNodeAddressCall { + pub ip: u32, + pub ipv_6: u128, + pub port: u32, + pub operator_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `requestToJoinAsForShadowSplicing` function with signature `requestToJoinAsForShadowSplicing(uint256,address)` and selector `0x9a1dc1b5` + ///Container type for all input parameters for the `setKeySet` function with signature `setKeySet((uint32,uint32,bool,string,string,uint256[],uint256[],uint256[],address[]))` and selector `0x74d0be87` #[derive( Clone, ::ethers::contract::EthCall, @@ -19111,14 +22338,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "requestToJoinAsForShadowSplicing", - abi = "requestToJoinAsForShadowSplicing(uint256,address)" + name = "setKeySet", + abi = "setKeySet((uint32,uint32,bool,string,string,uint256[],uint256[],uint256[],address[]))" )] - pub struct RequestToJoinAsForShadowSplicingCall { - pub realm_id: ::ethers::core::types::U256, - pub staker_address: ::ethers::core::types::Address, + pub struct SetKeySetCall { + pub update: KeySetConfig, } - ///Container type for all input parameters for the `requestToJoinAsNode` function with signature `requestToJoinAsNode(uint256,address)` and selector `0x5b7204fa` + ///Container type for all input parameters for the `setLitActionConfig` function with signature `setLitActionConfig(uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool))` and selector `0xe7d1f9a1` #[derive( Clone, ::ethers::contract::EthCall, @@ -19132,14 +22358,14 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "requestToJoinAsNode", - abi = "requestToJoinAsNode(uint256,address)" + name = "setLitActionConfig", + abi = "setLitActionConfig(uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool))" )] - pub struct RequestToJoinAsNodeCall { + pub struct SetLitActionConfigCall { pub realm_id: ::ethers::core::types::U256, - pub staker_address: ::ethers::core::types::Address, + pub new_config: LitActionConfig, } - ///Container type for all input parameters for the `requestToLeave` function with signature `requestToLeave()` and selector `0xac2f8afe` + ///Container type for all input parameters for the `setMaxVersion` function with signature `setMaxVersion(uint256,(uint256,uint256,uint256))` and selector `0xb34b251d` #[derive( Clone, ::ethers::contract::EthCall, @@ -19152,9 +22378,15 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "requestToLeave", abi = "requestToLeave()")] - pub struct RequestToLeaveCall; - ///Container type for all input parameters for the `requestToLeaveAsNode` function with signature `requestToLeaveAsNode(uint256)` and selector `0xc6f04cbb` + #[ethcall( + name = "setMaxVersion", + abi = "setMaxVersion(uint256,(uint256,uint256,uint256))" + )] + pub struct SetMaxVersionCall { + pub realm_id: ::ethers::core::types::U256, + pub version: Version, + } + ///Container type for all input parameters for the `setMinVersion` function with signature `setMinVersion(uint256,(uint256,uint256,uint256))` and selector `0x0c26c77b` #[derive( Clone, ::ethers::contract::EthCall, @@ -19167,11 +22399,15 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "requestToLeaveAsNode", abi = "requestToLeaveAsNode(uint256)")] - pub struct RequestToLeaveAsNodeCall { + #[ethcall( + name = "setMinVersion", + abi = "setMinVersion(uint256,(uint256,uint256,uint256))" + )] + pub struct SetMinVersionCall { pub realm_id: ::ethers::core::types::U256, + pub version: Version, } - ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256)` and selector `0x42842e0e` + ///Container type for all input parameters for the `setPendingRejoinTimeout` function with signature `setPendingRejoinTimeout(uint256)` and selector `0x2b156e7d` #[derive( Clone, ::ethers::contract::EthCall, @@ -19185,15 +22421,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "safeTransferFrom", - abi = "safeTransferFrom(address,address,uint256)" + name = "setPendingRejoinTimeout", + abi = "setPendingRejoinTimeout(uint256)" )] - pub struct SafeTransferFromCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub token_id: ::ethers::core::types::U256, + pub struct SetPendingRejoinTimeoutCall { + pub new_timeout: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256,bytes)` and selector `0xb88d4fde` + ///Container type for all input parameters for the `setPermittedValidators` function with signature `setPermittedValidators(uint256,address[])` and selector `0x8354ae59` #[derive( Clone, ::ethers::contract::EthCall, @@ -19207,16 +22441,14 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "safeTransferFrom", - abi = "safeTransferFrom(address,address,uint256,bytes)" + name = "setPermittedValidators", + abi = "setPermittedValidators(uint256,address[])" )] - pub struct SafeTransferFromWithFromAndToAndDataCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub token_id: ::ethers::core::types::U256, - pub data: ::ethers::core::types::Bytes, + pub struct SetPermittedValidatorsCall { + pub realm_id: ::ethers::core::types::U256, + pub validators_to_set: ::std::vec::Vec<::ethers::core::types::Address>, } - ///Container type for all input parameters for the `setApprovalForAll` function with signature `setApprovalForAll(address,bool)` and selector `0xa22cb465` + ///Container type for all input parameters for the `setPermittedValidatorsOn` function with signature `setPermittedValidatorsOn(uint256,bool)` and selector `0x74a22c51` #[derive( Clone, ::ethers::contract::EthCall, @@ -19229,12 +22461,15 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "setApprovalForAll", abi = "setApprovalForAll(address,bool)")] - pub struct SetApprovalForAllCall { - pub operator: ::ethers::core::types::Address, - pub approved: bool, + #[ethcall( + name = "setPermittedValidatorsOn", + abi = "setPermittedValidatorsOn(uint256,bool)" + )] + pub struct SetPermittedValidatorsOnCall { + pub realm_id: ::ethers::core::types::U256, + pub permitted_validators_on: bool, } - ///Container type for all input parameters for the `setComplaintConfig` function with signature `setComplaintConfig(uint256,(uint256,uint256,uint256,uint256))` and selector `0x440e8d22` + ///Container type for all input parameters for the `setRealmConfig` function with signature `setRealmConfig(uint256,(uint256,uint256,uint256,uint256,uint256,bool,uint256,bool))` and selector `0x7d35690f` #[derive( Clone, ::ethers::contract::EthCall, @@ -19248,29 +22483,34 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "setComplaintConfig", - abi = "setComplaintConfig(uint256,(uint256,uint256,uint256,uint256))" + name = "setRealmConfig", + abi = "setRealmConfig(uint256,(uint256,uint256,uint256,uint256,uint256,bool,uint256,bool))" )] - pub struct SetComplaintConfigCall { - pub reason: ::ethers::core::types::U256, - pub config: ComplaintConfig, + pub struct SetRealmConfigCall { + pub realm_id: ::ethers::core::types::U256, + pub new_config: RealmConfig, } - ///Container type for all input parameters for the `setConfig` function with signature `setConfig((uint256,uint256[],uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))` and selector `0x077b0d40` + ///Container type for all input parameters for the `setTokenTotalSupplyStandIn` function with signature `setTokenTotalSupplyStandIn(uint256)` and selector `0xe941a733` #[derive( Clone, ::ethers::contract::EthCall, ::ethers::contract::EthDisplay, serde::Serialize, serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash )] #[ethcall( - name = "setConfig", - abi = "setConfig((uint256,uint256[],uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))" + name = "setTokenTotalSupplyStandIn", + abi = "setTokenTotalSupplyStandIn(uint256)" )] - pub struct SetConfigCall { - pub new_config: GlobalConfig, + pub struct SetTokenTotalSupplyStandInCall { + pub new_total_supply: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `setContractResolver` function with signature `setContractResolver(address)` and selector `0xf95d71b1` + ///Container type for all input parameters for the `setTrustedForwarder` function with signature `setTrustedForwarder(address)` and selector `0xda742228` #[derive( Clone, ::ethers::contract::EthCall, @@ -19283,11 +22523,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "setContractResolver", abi = "setContractResolver(address)")] - pub struct SetContractResolverCall { - pub new_resolver_address: ::ethers::core::types::Address, + #[ethcall(name = "setTrustedForwarder", abi = "setTrustedForwarder(address)")] + pub struct SetTrustedForwarderCall { + pub forwarder: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `setDemeritRejoinThreshold` function with signature `setDemeritRejoinThreshold(uint256)` and selector `0x2531431b` + ///Container type for all input parameters for the `setUp` function with signature `setUp()` and selector `0x0a9254e4` #[derive( Clone, ::ethers::contract::EthCall, @@ -19300,14 +22540,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "setDemeritRejoinThreshold", - abi = "setDemeritRejoinThreshold(uint256)" - )] - pub struct SetDemeritRejoinThresholdCall { - pub new_threshold: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `setDevopsAdmin` function with signature `setDevopsAdmin(address)` and selector `0xcf7d1e87` + #[ethcall(name = "setUp", abi = "setUp()")] + pub struct SetUpCall; + ///Container type for all input parameters for the `setValidatorCommissionRate` function with signature `setValidatorCommissionRate(uint256)` and selector `0x7149ab58` #[derive( Clone, ::ethers::contract::EthCall, @@ -19320,11 +22555,14 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "setDevopsAdmin", abi = "setDevopsAdmin(address)")] - pub struct SetDevopsAdminCall { - pub new_devops_admin: ::ethers::core::types::Address, + #[ethcall( + name = "setValidatorCommissionRate", + abi = "setValidatorCommissionRate(uint256)" + )] + pub struct SetValidatorCommissionRateCall { + pub rate: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `setEpochEndTime` function with signature `setEpochEndTime(uint256,uint256)` and selector `0x5a7e6c22` + ///Container type for all input parameters for the `shouldKickValidator` function with signature `shouldKickValidator(uint256,address)` and selector `0x1e966b97` #[derive( Clone, ::ethers::contract::EthCall, @@ -19337,12 +22575,15 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "setEpochEndTime", abi = "setEpochEndTime(uint256,uint256)")] - pub struct SetEpochEndTimeCall { + #[ethcall( + name = "shouldKickValidator", + abi = "shouldKickValidator(uint256,address)" + )] + pub struct ShouldKickValidatorCall { pub realm_id: ::ethers::core::types::U256, - pub new_epoch_end_time: ::ethers::core::types::U256, + pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `setEpochLength` function with signature `setEpochLength(uint256,uint256)` and selector `0xeb57bafb` + ///Container type for all input parameters for the `signalReadyForNextEpoch` function with signature `signalReadyForNextEpoch(uint256,uint256)` and selector `0x9a25bdee` #[derive( Clone, ::ethers::contract::EthCall, @@ -19355,12 +22596,15 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "setEpochLength", abi = "setEpochLength(uint256,uint256)")] - pub struct SetEpochLengthCall { + #[ethcall( + name = "signalReadyForNextEpoch", + abi = "signalReadyForNextEpoch(uint256,uint256)" + )] + pub struct SignalReadyForNextEpochCall { pub realm_id: ::ethers::core::types::U256, - pub new_epoch_length: ::ethers::core::types::U256, + pub epoch_number: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `setEpochState` function with signature `setEpochState(uint256,uint8)` and selector `0x7a802454` + ///Container type for all input parameters for the `splitStakeRecord` function with signature `splitStakeRecord(address,uint256,uint256)` and selector `0xf69ccb92` #[derive( Clone, ::ethers::contract::EthCall, @@ -19373,12 +22617,16 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "setEpochState", abi = "setEpochState(uint256,uint8)")] - pub struct SetEpochStateCall { - pub realm_id: ::ethers::core::types::U256, - pub new_state: u8, + #[ethcall( + name = "splitStakeRecord", + abi = "splitStakeRecord(address,uint256,uint256)" + )] + pub struct SplitStakeRecordCall { + pub staker_address: ::ethers::core::types::Address, + pub stake_record_id: ::ethers::core::types::U256, + pub ratio: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `setEpochTimeout` function with signature `setEpochTimeout(uint256,uint256)` and selector `0x0c9d5399` + ///Container type for all input parameters for the `stake` function with signature `stake(uint256,uint256,address)` and selector `0x7628a37d` #[derive( Clone, ::ethers::contract::EthCall, @@ -19391,12 +22639,13 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "setEpochTimeout", abi = "setEpochTimeout(uint256,uint256)")] - pub struct SetEpochTimeoutCall { - pub realm_id: ::ethers::core::types::U256, - pub new_epoch_timeout: ::ethers::core::types::U256, + #[ethcall(name = "stake", abi = "stake(uint256,uint256,address)")] + pub struct StakeCall { + pub amount: ::ethers::core::types::U256, + pub time_lock: ::ethers::core::types::U256, + pub operator_staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `setIpPortNodeAddress` function with signature `setIpPortNodeAddress(uint32,uint128,uint32,address)` and selector `0x2c80b549` + ///Container type for all input parameters for the `stakerToValidatorsTheyStakedTo` function with signature `stakerToValidatorsTheyStakedTo(address)` and selector `0x6817d36e` #[derive( Clone, ::ethers::contract::EthCall, @@ -19410,16 +22659,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "setIpPortNodeAddress", - abi = "setIpPortNodeAddress(uint32,uint128,uint32,address)" + name = "stakerToValidatorsTheyStakedTo", + abi = "stakerToValidatorsTheyStakedTo(address)" )] - pub struct SetIpPortNodeAddressCall { - pub ip: u32, - pub ipv_6: u128, - pub port: u32, - pub operator_address: ::ethers::core::types::Address, + pub struct StakerToValidatorsTheyStakedToCall { + pub staker: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `setKeySet` function with signature `setKeySet((uint32,uint32,bool,string,string,uint256[],uint256[],uint256[],address[]))` and selector `0x74d0be87` + ///Container type for all input parameters for the `state` function with signature `state(uint256)` and selector `0x3e4f49e6` #[derive( Clone, ::ethers::contract::EthCall, @@ -19432,14 +22678,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "setKeySet", - abi = "setKeySet((uint32,uint32,bool,string,string,uint256[],uint256[],uint256[],address[]))" - )] - pub struct SetKeySetCall { - pub update: KeySetConfig, + #[ethcall(name = "state", abi = "state(uint256)")] + pub struct StateCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `setLitActionConfig` function with signature `setLitActionConfig(uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool))` and selector `0xe7d1f9a1` + ///Container type for all input parameters for the `supportsInterface` function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7` #[derive( Clone, ::ethers::contract::EthCall, @@ -19452,15 +22695,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "setLitActionConfig", - abi = "setLitActionConfig(uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool))" - )] - pub struct SetLitActionConfigCall { - pub realm_id: ::ethers::core::types::U256, - pub new_config: LitActionConfig, + #[ethcall(name = "supportsInterface", abi = "supportsInterface(bytes4)")] + pub struct SupportsInterfaceCall { + pub interface_id: [u8; 4], } - ///Container type for all input parameters for the `setMaxVersion` function with signature `setMaxVersion(uint256,(uint256,uint256,uint256))` and selector `0xb34b251d` + ///Container type for all input parameters for the `targetArtifactSelectors` function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0` #[derive( Clone, ::ethers::contract::EthCall, @@ -19473,15 +22712,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "setMaxVersion", - abi = "setMaxVersion(uint256,(uint256,uint256,uint256))" - )] - pub struct SetMaxVersionCall { - pub realm_id: ::ethers::core::types::U256, - pub version: Version, - } - ///Container type for all input parameters for the `setMinVersion` function with signature `setMinVersion(uint256,(uint256,uint256,uint256))` and selector `0x0c26c77b` + #[ethcall(name = "targetArtifactSelectors", abi = "targetArtifactSelectors()")] + pub struct TargetArtifactSelectorsCall; + ///Container type for all input parameters for the `targetArtifacts` function with signature `targetArtifacts()` and selector `0x85226c81` #[derive( Clone, ::ethers::contract::EthCall, @@ -19494,15 +22727,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "setMinVersion", - abi = "setMinVersion(uint256,(uint256,uint256,uint256))" - )] - pub struct SetMinVersionCall { - pub realm_id: ::ethers::core::types::U256, - pub version: Version, - } - ///Container type for all input parameters for the `setPendingRejoinTimeout` function with signature `setPendingRejoinTimeout(uint256)` and selector `0x2b156e7d` + #[ethcall(name = "targetArtifacts", abi = "targetArtifacts()")] + pub struct TargetArtifactsCall; + ///Container type for all input parameters for the `targetContracts` function with signature `targetContracts()` and selector `0x3f7286f4` #[derive( Clone, ::ethers::contract::EthCall, @@ -19515,14 +22742,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "setPendingRejoinTimeout", - abi = "setPendingRejoinTimeout(uint256)" - )] - pub struct SetPendingRejoinTimeoutCall { - pub new_timeout: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `setPermittedValidators` function with signature `setPermittedValidators(uint256,address[])` and selector `0x8354ae59` + #[ethcall(name = "targetContracts", abi = "targetContracts()")] + pub struct TargetContractsCall; + ///Container type for all input parameters for the `targetInterfaces` function with signature `targetInterfaces()` and selector `0x2ade3880` #[derive( Clone, ::ethers::contract::EthCall, @@ -19535,15 +22757,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "setPermittedValidators", - abi = "setPermittedValidators(uint256,address[])" - )] - pub struct SetPermittedValidatorsCall { - pub realm_id: ::ethers::core::types::U256, - pub validators_to_set: ::std::vec::Vec<::ethers::core::types::Address>, - } - ///Container type for all input parameters for the `setPermittedValidatorsOn` function with signature `setPermittedValidatorsOn(uint256,bool)` and selector `0x74a22c51` + #[ethcall(name = "targetInterfaces", abi = "targetInterfaces()")] + pub struct TargetInterfacesCall; + ///Container type for all input parameters for the `targetSelectors` function with signature `targetSelectors()` and selector `0x916a17c6` #[derive( Clone, ::ethers::contract::EthCall, @@ -19556,15 +22772,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "setPermittedValidatorsOn", - abi = "setPermittedValidatorsOn(uint256,bool)" - )] - pub struct SetPermittedValidatorsOnCall { - pub realm_id: ::ethers::core::types::U256, - pub permitted_validators_on: bool, - } - ///Container type for all input parameters for the `setRealmConfig` function with signature `setRealmConfig(uint256,(uint256,uint256,uint256,uint256,uint256,bool,uint256,bool))` and selector `0x7d35690f` + #[ethcall(name = "targetSelectors", abi = "targetSelectors()")] + pub struct TargetSelectorsCall; + ///Container type for all input parameters for the `targetSenders` function with signature `targetSenders()` and selector `0x3e5e3c23` #[derive( Clone, ::ethers::contract::EthCall, @@ -19577,15 +22787,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "setRealmConfig", - abi = "setRealmConfig(uint256,(uint256,uint256,uint256,uint256,uint256,bool,uint256,bool))" - )] - pub struct SetRealmConfigCall { - pub realm_id: ::ethers::core::types::U256, - pub new_config: RealmConfig, - } - ///Container type for all input parameters for the `setTokenTotalSupplyStandIn` function with signature `setTokenTotalSupplyStandIn(uint256)` and selector `0xe941a733` + #[ethcall(name = "targetSenders", abi = "targetSenders()")] + pub struct TargetSendersCall; + ///Container type for all input parameters for the `test_Stake` function with signature `test_Stake()` and selector `0xdbab1cd7` #[derive( Clone, ::ethers::contract::EthCall, @@ -19598,14 +22802,9 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall( - name = "setTokenTotalSupplyStandIn", - abi = "setTokenTotalSupplyStandIn(uint256)" - )] - pub struct SetTokenTotalSupplyStandInCall { - pub new_total_supply: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `setTrustedForwarder` function with signature `setTrustedForwarder(address)` and selector `0xda742228` + #[ethcall(name = "test_Stake", abi = "test_Stake()")] + pub struct TestStakeCall; + ///Container type for all input parameters for the `test_StakeAndTransfer` function with signature `test_StakeAndTransfer(bool)` and selector `0xaaedca62` #[derive( Clone, ::ethers::contract::EthCall, @@ -19618,11 +22817,11 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "setTrustedForwarder", abi = "setTrustedForwarder(address)")] - pub struct SetTrustedForwarderCall { - pub forwarder: ::ethers::core::types::Address, + #[ethcall(name = "test_StakeAndTransfer", abi = "test_StakeAndTransfer(bool)")] + pub struct TestStakeAndTransferCall { + pub is_safe_transfer: bool, } - ///Container type for all input parameters for the `setValidatorCommissionRate` function with signature `setValidatorCommissionRate(uint256)` and selector `0x7149ab58` + ///Container type for all input parameters for the `test_StakeAndTransfer_ClaimRewards` function with signature `test_StakeAndTransfer_ClaimRewards(bool)` and selector `0x96007d44` #[derive( Clone, ::ethers::contract::EthCall, @@ -19636,13 +22835,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "setValidatorCommissionRate", - abi = "setValidatorCommissionRate(uint256)" + name = "test_StakeAndTransfer_ClaimRewards", + abi = "test_StakeAndTransfer_ClaimRewards(bool)" )] - pub struct SetValidatorCommissionRateCall { - pub rate: ::ethers::core::types::U256, + pub struct TestStakeAndTransferClaimRewardsCall { + pub is_safe_transfer: bool, } - ///Container type for all input parameters for the `shouldKickValidator` function with signature `shouldKickValidator(uint256,address)` and selector `0x1e966b97` + ///Container type for all input parameters for the `test_StakeAndTransfer_ReceiverMutatesStakeRecord` function with signature `test_StakeAndTransfer_ReceiverMutatesStakeRecord(bool,uint256)` and selector `0x6239b4f7` #[derive( Clone, ::ethers::contract::EthCall, @@ -19656,14 +22855,14 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "shouldKickValidator", - abi = "shouldKickValidator(uint256,address)" + name = "test_StakeAndTransfer_ReceiverMutatesStakeRecord", + abi = "test_StakeAndTransfer_ReceiverMutatesStakeRecord(bool,uint256)" )] - pub struct ShouldKickValidatorCall { - pub realm_id: ::ethers::core::types::U256, - pub staker_address: ::ethers::core::types::Address, + pub struct TestStakeAndTransferReceiverMutatesStakeRecordCall { + pub is_safe_transfer: bool, + pub operation: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `signalReadyForNextEpoch` function with signature `signalReadyForNextEpoch(uint256,uint256)` and selector `0x9a25bdee` + ///Container type for all input parameters for the `test_StakeAndTransfer_RevertNotOwner` function with signature `test_StakeAndTransfer_RevertNotOwner(bool)` and selector `0x5ad8b9a9` #[derive( Clone, ::ethers::contract::EthCall, @@ -19677,14 +22876,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "signalReadyForNextEpoch", - abi = "signalReadyForNextEpoch(uint256,uint256)" + name = "test_StakeAndTransfer_RevertNotOwner", + abi = "test_StakeAndTransfer_RevertNotOwner(bool)" )] - pub struct SignalReadyForNextEpochCall { - pub realm_id: ::ethers::core::types::U256, - pub epoch_number: ::ethers::core::types::U256, + pub struct TestStakeAndTransferRevertNotOwnerCall { + pub is_safe_transfer: bool, } - ///Container type for all input parameters for the `splitStakeRecord` function with signature `splitStakeRecord(address,uint256,uint256)` and selector `0xf69ccb92` + ///Container type for all input parameters for the `test_StakeAndTransfer_TokenOwnerByIndex` function with signature `test_StakeAndTransfer_TokenOwnerByIndex(bool)` and selector `0xa7319b44` #[derive( Clone, ::ethers::contract::EthCall, @@ -19698,15 +22896,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "splitStakeRecord", - abi = "splitStakeRecord(address,uint256,uint256)" + name = "test_StakeAndTransfer_TokenOwnerByIndex", + abi = "test_StakeAndTransfer_TokenOwnerByIndex(bool)" )] - pub struct SplitStakeRecordCall { - pub staker_address: ::ethers::core::types::Address, - pub stake_record_id: ::ethers::core::types::U256, - pub ratio: ::ethers::core::types::U256, + pub struct TestStakeAndTransferTokenOwnerByIndexCall { + pub is_safe_transfer: bool, } - ///Container type for all input parameters for the `stake` function with signature `stake(uint256,uint256,address)` and selector `0x7628a37d` + ///Container type for all input parameters for the `test_StakeAndTransfer_Withdraw` function with signature `test_StakeAndTransfer_Withdraw(bool,bool)` and selector `0x86ef1d4d` #[derive( Clone, ::ethers::contract::EthCall, @@ -19719,13 +22915,15 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "stake", abi = "stake(uint256,uint256,address)")] - pub struct StakeCall { - pub amount: ::ethers::core::types::U256, - pub time_lock: ::ethers::core::types::U256, - pub operator_staker_address: ::ethers::core::types::Address, + #[ethcall( + name = "test_StakeAndTransfer_Withdraw", + abi = "test_StakeAndTransfer_Withdraw(bool,bool)" + )] + pub struct TestStakeAndTransferWithdrawCall { + pub is_safe_transfer: bool, + pub is_unfreeze_before_transfer: bool, } - ///Container type for all input parameters for the `stakeBalanceOf` function with signature `stakeBalanceOf(address)` and selector `0xaf46aa08` + ///Container type for all input parameters for the `test_StakeApproveAndTransfer` function with signature `test_StakeApproveAndTransfer(bool)` and selector `0x22e7a7ac` #[derive( Clone, ::ethers::contract::EthCall, @@ -19738,11 +22936,14 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "stakeBalanceOf", abi = "stakeBalanceOf(address)")] - pub struct StakeBalanceOfCall { - pub staker_address: ::ethers::core::types::Address, + #[ethcall( + name = "test_StakeApproveAndTransfer", + abi = "test_StakeApproveAndTransfer(bool)" + )] + pub struct TestStakeApproveAndTransferCall { + pub is_safe_transfer: bool, } - ///Container type for all input parameters for the `stakerToValidatorsTheyStakedTo` function with signature `stakerToValidatorsTheyStakedTo(address)` and selector `0x6817d36e` + ///Container type for all input parameters for the `test_StakeApproveForAllAndTransfer` function with signature `test_StakeApproveForAllAndTransfer(bool)` and selector `0x78854e37` #[derive( Clone, ::ethers::contract::EthCall, @@ -19756,13 +22957,13 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] #[ethcall( - name = "stakerToValidatorsTheyStakedTo", - abi = "stakerToValidatorsTheyStakedTo(address)" + name = "test_StakeApproveForAllAndTransfer", + abi = "test_StakeApproveForAllAndTransfer(bool)" )] - pub struct StakerToValidatorsTheyStakedToCall { - pub staker: ::ethers::core::types::Address, + pub struct TestStakeApproveForAllAndTransferCall { + pub is_safe_transfer: bool, } - ///Container type for all input parameters for the `state` function with signature `state(uint256)` and selector `0x3e4f49e6` + ///Container type for all input parameters for the `test_StakeMax_TransferShouldFail` function with signature `test_StakeMax_TransferShouldFail(bool)` and selector `0xb29fabc7` #[derive( Clone, ::ethers::contract::EthCall, @@ -19775,11 +22976,14 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "state", abi = "state(uint256)")] - pub struct StateCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall( + name = "test_StakeMax_TransferShouldFail", + abi = "test_StakeMax_TransferShouldFail(bool)" + )] + pub struct TestStakeMaxTransferShouldFailCall { + pub is_safe_transfer: bool, } - ///Container type for all input parameters for the `supportsInterface` function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7` + ///Container type for all input parameters for the `test_Stake_MutateStakeRecord` function with signature `test_Stake_MutateStakeRecord(uint256)` and selector `0xa90bb850` #[derive( Clone, ::ethers::contract::EthCall, @@ -19792,9 +22996,12 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - #[ethcall(name = "supportsInterface", abi = "supportsInterface(bytes4)")] - pub struct SupportsInterfaceCall { - pub interface_id: [u8; 4], + #[ethcall( + name = "test_Stake_MutateStakeRecord", + abi = "test_Stake_MutateStakeRecord(uint256)" + )] + pub struct TestStakeMutateStakeRecordCall { + pub operation: ::ethers::core::types::U256, } ///Container type for all input parameters for the `tokenOfOwnerByIndex` function with signature `tokenOfOwnerByIndex(address,uint256)` and selector `0x2f745c59` #[derive( @@ -20009,6 +23216,13 @@ abi_errors.append(&mut __abi_errors_2()); serde::Deserialize, )] pub enum StakingCalls { + IsTest(IsTestCall), + GenerateAddresses(GenerateAddressesCall), + GenerateAddressesWithOffset(GenerateAddressesWithOffsetCall), + GeneratePubKeys(GeneratePubKeysCall), + GenerateUint256S(GenerateUint256SCall), + GenerateUint256SWithOffset(GenerateUint256SWithOffsetCall), + GenerateValidators(GenerateValidatorsCall), AddRealm(AddRealmCall), AdminKickValidatorInNextEpoch(AdminKickValidatorInNextEpochCall), AdminRejoinValidator(AdminRejoinValidatorCall), @@ -20047,11 +23261,16 @@ abi_errors.append(&mut __abi_errors_2()); EmitClearOfflinePhaseData(EmitClearOfflinePhaseDataCall), EmitCountOfflinePhaseData(EmitCountOfflinePhaseDataCall), Epoch(EpochCall), + ExcludeArtifacts(ExcludeArtifactsCall), + ExcludeContracts(ExcludeContractsCall), + ExcludeSelectors(ExcludeSelectorsCall), + ExcludeSenders(ExcludeSendersCall), Exit(ExitCall), FacetAddress(FacetAddressCall), FacetAddresses(FacetAddressesCall), FacetFunctionSelectors(FacetFunctionSelectorsCall), Facets(FacetsCall), + Failed(FailedCall), GetActiveUnkickedValidatorCount(GetActiveUnkickedValidatorCountCall), GetActiveUnkickedValidatorStructs(GetActiveUnkickedValidatorStructsCall), GetActiveUnkickedValidatorStructsAndCounts( @@ -20084,6 +23303,7 @@ abi_errors.append(&mut __abi_errors_2()); GetMinVersionString(GetMinVersionStringCall), GetMinimumSelfStake(GetMinimumSelfStakeCall), GetMinimumStake(GetMinimumStakeCall), + GetMostRecentStakeRecord(GetMostRecentStakeRecordCall), GetNodeAttestedPubKeyMappings(GetNodeAttestedPubKeyMappingsCall), GetNodeDemerits(GetNodeDemeritsCall), GetNodeStakerAddressMappings(GetNodeStakerAddressMappingsCall), @@ -20175,6 +23395,7 @@ abi_errors.append(&mut __abi_errors_2()); RequestToLeaveAsNode(RequestToLeaveAsNodeCall), SafeTransferFrom(SafeTransferFromCall), SafeTransferFromWithFromAndToAndData(SafeTransferFromWithFromAndToAndDataCall), + SelfStakeBalanceOf(SelfStakeBalanceOfCall), SetApprovalForAll(SetApprovalForAllCall), SetComplaintConfig(SetComplaintConfigCall), SetConfig(SetConfigCall), @@ -20196,15 +23417,34 @@ abi_errors.append(&mut __abi_errors_2()); SetRealmConfig(SetRealmConfigCall), SetTokenTotalSupplyStandIn(SetTokenTotalSupplyStandInCall), SetTrustedForwarder(SetTrustedForwarderCall), + SetUp(SetUpCall), SetValidatorCommissionRate(SetValidatorCommissionRateCall), ShouldKickValidator(ShouldKickValidatorCall), SignalReadyForNextEpoch(SignalReadyForNextEpochCall), SplitStakeRecord(SplitStakeRecordCall), Stake(StakeCall), - StakeBalanceOf(StakeBalanceOfCall), StakerToValidatorsTheyStakedTo(StakerToValidatorsTheyStakedToCall), State(StateCall), SupportsInterface(SupportsInterfaceCall), + TargetArtifactSelectors(TargetArtifactSelectorsCall), + TargetArtifacts(TargetArtifactsCall), + TargetContracts(TargetContractsCall), + TargetInterfaces(TargetInterfacesCall), + TargetSelectors(TargetSelectorsCall), + TargetSenders(TargetSendersCall), + TestStake(TestStakeCall), + TestStakeAndTransfer(TestStakeAndTransferCall), + TestStakeAndTransferClaimRewards(TestStakeAndTransferClaimRewardsCall), + TestStakeAndTransferReceiverMutatesStakeRecord( + TestStakeAndTransferReceiverMutatesStakeRecordCall, + ), + TestStakeAndTransferRevertNotOwner(TestStakeAndTransferRevertNotOwnerCall), + TestStakeAndTransferTokenOwnerByIndex(TestStakeAndTransferTokenOwnerByIndexCall), + TestStakeAndTransferWithdraw(TestStakeAndTransferWithdrawCall), + TestStakeApproveAndTransfer(TestStakeApproveAndTransferCall), + TestStakeApproveForAllAndTransfer(TestStakeApproveForAllAndTransferCall), + TestStakeMaxTransferShouldFail(TestStakeMaxTransferShouldFailCall), + TestStakeMutateStakeRecord(TestStakeMutateStakeRecordCall), TokenOfOwnerByIndex(TokenOfOwnerByIndexCall), TokenToStakeRecord(TokenToStakeRecordCall), TotalSupply(TotalSupplyCall), @@ -20222,6 +23462,41 @@ abi_errors.append(&mut __abi_errors_2()); data: impl AsRef<[u8]>, ) -> ::core::result::Result { let data = data.as_ref(); + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::IsTest(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::GenerateAddresses(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::GenerateAddressesWithOffset(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::GeneratePubKeys(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::GenerateUint256S(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::GenerateUint256SWithOffset(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::GenerateValidators(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -20384,6 +23659,26 @@ abi_errors.append(&mut __abi_errors_2()); ) { return Ok(Self::Epoch(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::ExcludeArtifacts(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::ExcludeContracts(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::ExcludeSelectors(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::ExcludeSenders(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -20409,6 +23704,11 @@ abi_errors.append(&mut __abi_errors_2()); ) { return Ok(Self::Facets(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::Failed(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -20539,6 +23839,11 @@ abi_errors.append(&mut __abi_errors_2()); ) { return Ok(Self::GetMinimumStake(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::GetMostRecentStakeRecord(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -20964,6 +24269,11 @@ abi_errors.append(&mut __abi_errors_2()); ) { return Ok(Self::SafeTransferFromWithFromAndToAndData(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SelfStakeBalanceOf(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -21009,110 +24319,195 @@ abi_errors.append(&mut __abi_errors_2()); ) { return Ok(Self::SetEpochState(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetEpochTimeout(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetIpPortNodeAddress(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetKeySet(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetLitActionConfig(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetMaxVersion(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetMinVersion(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetPendingRejoinTimeout(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetPermittedValidators(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetPermittedValidatorsOn(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetRealmConfig(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetTokenTotalSupplyStandIn(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetTrustedForwarder(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetUp(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetValidatorCommissionRate(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::ShouldKickValidator(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SignalReadyForNextEpoch(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SplitStakeRecord(decoded)); + } + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetEpochTimeout(decoded)); + return Ok(Self::Stake(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetIpPortNodeAddress(decoded)); + return Ok(Self::StakerToValidatorsTheyStakedTo(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetKeySet(decoded)); + return Ok(Self::State(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetLitActionConfig(decoded)); + return Ok(Self::SupportsInterface(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetMaxVersion(decoded)); + return Ok(Self::TargetArtifactSelectors(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetMinVersion(decoded)); + return Ok(Self::TargetArtifacts(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetPendingRejoinTimeout(decoded)); + return Ok(Self::TargetContracts(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetPermittedValidators(decoded)); + return Ok(Self::TargetInterfaces(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetPermittedValidatorsOn(decoded)); + return Ok(Self::TargetSelectors(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetRealmConfig(decoded)); + return Ok(Self::TargetSenders(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetTokenTotalSupplyStandIn(decoded)); + return Ok(Self::TestStake(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetTrustedForwarder(decoded)); + return Ok(Self::TestStakeAndTransfer(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetValidatorCommissionRate(decoded)); + return Ok(Self::TestStakeAndTransferClaimRewards(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::ShouldKickValidator(decoded)); + return Ok(Self::TestStakeAndTransferReceiverMutatesStakeRecord(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SignalReadyForNextEpoch(decoded)); + return Ok(Self::TestStakeAndTransferRevertNotOwner(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SplitStakeRecord(decoded)); + return Ok(Self::TestStakeAndTransferTokenOwnerByIndex(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::Stake(decoded)); + return Ok(Self::TestStakeAndTransferWithdraw(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::StakeBalanceOf(decoded)); + return Ok(Self::TestStakeApproveAndTransfer(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::StakerToValidatorsTheyStakedTo(decoded)); + return Ok(Self::TestStakeApproveForAllAndTransfer(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::State(decoded)); + return Ok(Self::TestStakeMaxTransferShouldFail(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SupportsInterface(decoded)); + return Ok(Self::TestStakeMutateStakeRecord(decoded)); } if let Ok(decoded) = ::decode( data, @@ -21175,6 +24570,25 @@ abi_errors.append(&mut __abi_errors_2()); impl ::ethers::core::abi::AbiEncode for StakingCalls { fn encode(self) -> Vec { match self { + Self::IsTest(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GenerateAddresses(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GenerateAddressesWithOffset(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GeneratePubKeys(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GenerateUint256S(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GenerateUint256SWithOffset(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GenerateValidators(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::AddRealm(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -21267,6 +24681,18 @@ abi_errors.append(&mut __abi_errors_2()); ::ethers::core::abi::AbiEncode::encode(element) } Self::Epoch(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ExcludeArtifacts(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ExcludeContracts(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ExcludeSelectors(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ExcludeSenders(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::Exit(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::FacetAddress(element) => { ::ethers::core::abi::AbiEncode::encode(element) @@ -21278,6 +24704,7 @@ abi_errors.append(&mut __abi_errors_2()); ::ethers::core::abi::AbiEncode::encode(element) } Self::Facets(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Failed(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::GetActiveUnkickedValidatorCount(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -21356,6 +24783,9 @@ abi_errors.append(&mut __abi_errors_2()); Self::GetMinimumStake(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::GetMostRecentStakeRecord(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::GetNodeAttestedPubKeyMappings(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -21603,6 +25033,9 @@ abi_errors.append(&mut __abi_errors_2()); Self::SafeTransferFromWithFromAndToAndData(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::SelfStakeBalanceOf(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::SetApprovalForAll(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -21666,6 +25099,7 @@ abi_errors.append(&mut __abi_errors_2()); Self::SetTrustedForwarder(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::SetUp(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::SetValidatorCommissionRate(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -21679,9 +25113,6 @@ abi_errors.append(&mut __abi_errors_2()); ::ethers::core::abi::AbiEncode::encode(element) } Self::Stake(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::StakeBalanceOf(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } Self::StakerToValidatorsTheyStakedTo(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -21689,6 +25120,57 @@ abi_errors.append(&mut __abi_errors_2()); Self::SupportsInterface(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::TargetArtifactSelectors(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TargetArtifacts(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TargetContracts(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TargetInterfaces(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TargetSelectors(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TargetSenders(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestStake(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestStakeAndTransfer(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestStakeAndTransferClaimRewards(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestStakeAndTransferReceiverMutatesStakeRecord(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestStakeAndTransferRevertNotOwner(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestStakeAndTransferTokenOwnerByIndex(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestStakeAndTransferWithdraw(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestStakeApproveAndTransfer(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestStakeApproveForAllAndTransfer(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestStakeMaxTransferShouldFail(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestStakeMutateStakeRecord(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::TokenOfOwnerByIndex(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -21728,6 +25210,19 @@ abi_errors.append(&mut __abi_errors_2()); impl ::core::fmt::Display for StakingCalls { fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { match self { + Self::IsTest(element) => ::core::fmt::Display::fmt(element, f), + Self::GenerateAddresses(element) => ::core::fmt::Display::fmt(element, f), + Self::GenerateAddressesWithOffset(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::GeneratePubKeys(element) => ::core::fmt::Display::fmt(element, f), + Self::GenerateUint256S(element) => ::core::fmt::Display::fmt(element, f), + Self::GenerateUint256SWithOffset(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::GenerateValidators(element) => { + ::core::fmt::Display::fmt(element, f) + } Self::AddRealm(element) => ::core::fmt::Display::fmt(element, f), Self::AdminKickValidatorInNextEpoch(element) => { ::core::fmt::Display::fmt(element, f) @@ -21800,6 +25295,10 @@ abi_errors.append(&mut __abi_errors_2()); ::core::fmt::Display::fmt(element, f) } Self::Epoch(element) => ::core::fmt::Display::fmt(element, f), + Self::ExcludeArtifacts(element) => ::core::fmt::Display::fmt(element, f), + Self::ExcludeContracts(element) => ::core::fmt::Display::fmt(element, f), + Self::ExcludeSelectors(element) => ::core::fmt::Display::fmt(element, f), + Self::ExcludeSenders(element) => ::core::fmt::Display::fmt(element, f), Self::Exit(element) => ::core::fmt::Display::fmt(element, f), Self::FacetAddress(element) => ::core::fmt::Display::fmt(element, f), Self::FacetAddresses(element) => ::core::fmt::Display::fmt(element, f), @@ -21807,6 +25306,7 @@ abi_errors.append(&mut __abi_errors_2()); ::core::fmt::Display::fmt(element, f) } Self::Facets(element) => ::core::fmt::Display::fmt(element, f), + Self::Failed(element) => ::core::fmt::Display::fmt(element, f), Self::GetActiveUnkickedValidatorCount(element) => { ::core::fmt::Display::fmt(element, f) } @@ -21865,6 +25365,9 @@ abi_errors.append(&mut __abi_errors_2()); ::core::fmt::Display::fmt(element, f) } Self::GetMinimumStake(element) => ::core::fmt::Display::fmt(element, f), + Self::GetMostRecentStakeRecord(element) => { + ::core::fmt::Display::fmt(element, f) + } Self::GetNodeAttestedPubKeyMappings(element) => { ::core::fmt::Display::fmt(element, f) } @@ -22060,6 +25563,9 @@ abi_errors.append(&mut __abi_errors_2()); Self::SafeTransferFromWithFromAndToAndData(element) => { ::core::fmt::Display::fmt(element, f) } + Self::SelfStakeBalanceOf(element) => { + ::core::fmt::Display::fmt(element, f) + } Self::SetApprovalForAll(element) => ::core::fmt::Display::fmt(element, f), Self::SetComplaintConfig(element) => { ::core::fmt::Display::fmt(element, f) @@ -22101,6 +25607,7 @@ abi_errors.append(&mut __abi_errors_2()); Self::SetTrustedForwarder(element) => { ::core::fmt::Display::fmt(element, f) } + Self::SetUp(element) => ::core::fmt::Display::fmt(element, f), Self::SetValidatorCommissionRate(element) => { ::core::fmt::Display::fmt(element, f) } @@ -22112,12 +25619,50 @@ abi_errors.append(&mut __abi_errors_2()); } Self::SplitStakeRecord(element) => ::core::fmt::Display::fmt(element, f), Self::Stake(element) => ::core::fmt::Display::fmt(element, f), - Self::StakeBalanceOf(element) => ::core::fmt::Display::fmt(element, f), Self::StakerToValidatorsTheyStakedTo(element) => { ::core::fmt::Display::fmt(element, f) } Self::State(element) => ::core::fmt::Display::fmt(element, f), Self::SupportsInterface(element) => ::core::fmt::Display::fmt(element, f), + Self::TargetArtifactSelectors(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TargetArtifacts(element) => ::core::fmt::Display::fmt(element, f), + Self::TargetContracts(element) => ::core::fmt::Display::fmt(element, f), + Self::TargetInterfaces(element) => ::core::fmt::Display::fmt(element, f), + Self::TargetSelectors(element) => ::core::fmt::Display::fmt(element, f), + Self::TargetSenders(element) => ::core::fmt::Display::fmt(element, f), + Self::TestStake(element) => ::core::fmt::Display::fmt(element, f), + Self::TestStakeAndTransfer(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestStakeAndTransferClaimRewards(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestStakeAndTransferReceiverMutatesStakeRecord(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestStakeAndTransferRevertNotOwner(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestStakeAndTransferTokenOwnerByIndex(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestStakeAndTransferWithdraw(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestStakeApproveAndTransfer(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestStakeApproveForAllAndTransfer(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestStakeMaxTransferShouldFail(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestStakeMutateStakeRecord(element) => { + ::core::fmt::Display::fmt(element, f) + } Self::TokenOfOwnerByIndex(element) => { ::core::fmt::Display::fmt(element, f) } @@ -22142,6 +25687,41 @@ abi_errors.append(&mut __abi_errors_2()); } } } + impl ::core::convert::From for StakingCalls { + fn from(value: IsTestCall) -> Self { + Self::IsTest(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: GenerateAddressesCall) -> Self { + Self::GenerateAddresses(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: GenerateAddressesWithOffsetCall) -> Self { + Self::GenerateAddressesWithOffset(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: GeneratePubKeysCall) -> Self { + Self::GeneratePubKeys(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: GenerateUint256SCall) -> Self { + Self::GenerateUint256S(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: GenerateUint256SWithOffsetCall) -> Self { + Self::GenerateUint256SWithOffset(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: GenerateValidatorsCall) -> Self { + Self::GenerateValidators(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: AddRealmCall) -> Self { Self::AddRealm(value) @@ -22305,6 +25885,26 @@ abi_errors.append(&mut __abi_errors_2()); Self::Epoch(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: ExcludeArtifactsCall) -> Self { + Self::ExcludeArtifacts(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: ExcludeContractsCall) -> Self { + Self::ExcludeContracts(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: ExcludeSelectorsCall) -> Self { + Self::ExcludeSelectors(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: ExcludeSendersCall) -> Self { + Self::ExcludeSenders(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: ExitCall) -> Self { Self::Exit(value) @@ -22330,6 +25930,11 @@ abi_errors.append(&mut __abi_errors_2()); Self::Facets(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: FailedCall) -> Self { + Self::Failed(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: GetActiveUnkickedValidatorCountCall) -> Self { Self::GetActiveUnkickedValidatorCount(value) @@ -22463,6 +26068,11 @@ abi_errors.append(&mut __abi_errors_2()); Self::GetMinimumStake(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: GetMostRecentStakeRecordCall) -> Self { + Self::GetMostRecentStakeRecord(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: GetNodeAttestedPubKeyMappingsCall) -> Self { Self::GetNodeAttestedPubKeyMappings(value) @@ -22892,6 +26502,11 @@ abi_errors.append(&mut __abi_errors_2()); Self::SafeTransferFromWithFromAndToAndData(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: SelfStakeBalanceOfCall) -> Self { + Self::SelfStakeBalanceOf(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: SetApprovalForAllCall) -> Self { Self::SetApprovalForAll(value) @@ -22997,6 +26612,11 @@ abi_errors.append(&mut __abi_errors_2()); Self::SetTrustedForwarder(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: SetUpCall) -> Self { + Self::SetUp(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: SetValidatorCommissionRateCall) -> Self { Self::SetValidatorCommissionRate(value) @@ -23022,11 +26642,6 @@ abi_errors.append(&mut __abi_errors_2()); Self::Stake(value) } } - impl ::core::convert::From for StakingCalls { - fn from(value: StakeBalanceOfCall) -> Self { - Self::StakeBalanceOf(value) - } - } impl ::core::convert::From for StakingCalls { fn from(value: StakerToValidatorsTheyStakedToCall) -> Self { Self::StakerToValidatorsTheyStakedTo(value) @@ -23042,6 +26657,93 @@ abi_errors.append(&mut __abi_errors_2()); Self::SupportsInterface(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: TargetArtifactSelectorsCall) -> Self { + Self::TargetArtifactSelectors(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TargetArtifactsCall) -> Self { + Self::TargetArtifacts(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TargetContractsCall) -> Self { + Self::TargetContracts(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TargetInterfacesCall) -> Self { + Self::TargetInterfaces(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TargetSelectorsCall) -> Self { + Self::TargetSelectors(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TargetSendersCall) -> Self { + Self::TargetSenders(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TestStakeCall) -> Self { + Self::TestStake(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TestStakeAndTransferCall) -> Self { + Self::TestStakeAndTransfer(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TestStakeAndTransferClaimRewardsCall) -> Self { + Self::TestStakeAndTransferClaimRewards(value) + } + } + impl ::core::convert::From + for StakingCalls { + fn from(value: TestStakeAndTransferReceiverMutatesStakeRecordCall) -> Self { + Self::TestStakeAndTransferReceiverMutatesStakeRecord(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TestStakeAndTransferRevertNotOwnerCall) -> Self { + Self::TestStakeAndTransferRevertNotOwner(value) + } + } + impl ::core::convert::From + for StakingCalls { + fn from(value: TestStakeAndTransferTokenOwnerByIndexCall) -> Self { + Self::TestStakeAndTransferTokenOwnerByIndex(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TestStakeAndTransferWithdrawCall) -> Self { + Self::TestStakeAndTransferWithdraw(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TestStakeApproveAndTransferCall) -> Self { + Self::TestStakeApproveAndTransfer(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TestStakeApproveForAllAndTransferCall) -> Self { + Self::TestStakeApproveForAllAndTransfer(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TestStakeMaxTransferShouldFailCall) -> Self { + Self::TestStakeMaxTransferShouldFail(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TestStakeMutateStakeRecordCall) -> Self { + Self::TestStakeMutateStakeRecord(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: TokenOfOwnerByIndexCall) -> Self { Self::TokenOfOwnerByIndex(value) @@ -23097,6 +26799,110 @@ abi_errors.append(&mut __abi_errors_2()); Self::Withdraw(value) } } + ///Container type for all return fields from the `IS_TEST` function with signature `IS_TEST()` and selector `0xfa7626d4` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct IsTestReturn(pub bool); + ///Container type for all return fields from the `_generateAddresses` function with signature `_generateAddresses(uint256)` and selector `0x678ac78a` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GenerateAddressesReturn( + pub ::std::vec::Vec<::ethers::core::types::Address>, + ); + ///Container type for all return fields from the `_generateAddressesWithOffset` function with signature `_generateAddressesWithOffset(uint256,uint256)` and selector `0xa5187b2b` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GenerateAddressesWithOffsetReturn( + pub ::std::vec::Vec<::ethers::core::types::Address>, + ); + ///Container type for all return fields from the `_generatePubKeys` function with signature `_generatePubKeys(uint256)` and selector `0xfed0a77b` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GeneratePubKeysReturn(pub ::std::vec::Vec<::ethers::core::types::Bytes>); + ///Container type for all return fields from the `_generateUint256s` function with signature `_generateUint256s(uint256)` and selector `0xae517f4d` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GenerateUint256SReturn(pub ::std::vec::Vec<::ethers::core::types::U256>); + ///Container type for all return fields from the `_generateUint256sWithOffset` function with signature `_generateUint256sWithOffset(uint256,uint256)` and selector `0xfb9d55b8` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GenerateUint256SWithOffsetReturn( + pub ::std::vec::Vec<::ethers::core::types::U256>, + ); + ///Container type for all return fields from the `_generateValidators` function with signature `_generateValidators(uint256)` and selector `0xc5344d40` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GenerateValidatorsReturn(pub ::std::vec::Vec); ///Container type for all return fields from the `addRealm` function with signature `addRealm()` and selector `0x472a7d89` #[derive( Clone, @@ -23271,6 +27077,70 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] pub struct EpochReturn(pub Epoch); + ///Container type for all return fields from the `excludeArtifacts` function with signature `excludeArtifacts()` and selector `0xb5508aa9` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct ExcludeArtifactsReturn { + pub excluded_artifacts: ::std::vec::Vec<::std::string::String>, + } + ///Container type for all return fields from the `excludeContracts` function with signature `excludeContracts()` and selector `0xe20c9f71` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct ExcludeContractsReturn { + pub excluded_contracts: ::std::vec::Vec<::ethers::core::types::Address>, + } + ///Container type for all return fields from the `excludeSelectors` function with signature `excludeSelectors()` and selector `0xb0464fdc` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct ExcludeSelectorsReturn { + pub excluded_selectors: ::std::vec::Vec, + } + ///Container type for all return fields from the `excludeSenders` function with signature `excludeSenders()` and selector `0x1ed7831c` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct ExcludeSendersReturn { + pub excluded_senders: ::std::vec::Vec<::ethers::core::types::Address>, + } ///Container type for all return fields from the `facetAddress` function with signature `facetAddress(bytes4)` and selector `0xcdffacc6` #[derive( Clone, @@ -23335,6 +27205,20 @@ abi_errors.append(&mut __abi_errors_2()); pub struct FacetsReturn { pub facets: ::std::vec::Vec, } + ///Container type for all return fields from the `failed` function with signature `failed()` and selector `0xba414fa6` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct FailedReturn(pub bool); ///Container type for all return fields from the `getActiveUnkickedValidatorCount` function with signature `getActiveUnkickedValidatorCount(uint256)` and selector `0x7a808c0d` #[derive( Clone, @@ -23710,6 +27594,20 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] pub struct GetMinimumStakeReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `getMostRecentStakeRecord` function with signature `getMostRecentStakeRecord(address,address)` and selector `0x7d0f412f` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GetMostRecentStakeRecordReturn(pub StakeRecord); ///Container type for all return fields from the `getNodeAttestedPubKeyMappings` function with signature `getNodeAttestedPubKeyMappings(address[])` and selector `0x88790aee` #[derive( Clone, @@ -24671,7 +28569,7 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] pub struct RealmConfigReturn(pub RealmConfig); - ///Container type for all return fields from the `shouldKickValidator` function with signature `shouldKickValidator(uint256,address)` and selector `0x1e966b97` + ///Container type for all return fields from the `selfStakeBalanceOf` function with signature `selfStakeBalanceOf(address)` and selector `0xeddf837a` #[derive( Clone, ::ethers::contract::EthAbiType, @@ -24684,8 +28582,8 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - pub struct ShouldKickValidatorReturn(pub bool); - ///Container type for all return fields from the `stakeBalanceOf` function with signature `stakeBalanceOf(address)` and selector `0xaf46aa08` + pub struct SelfStakeBalanceOfReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `shouldKickValidator` function with signature `shouldKickValidator(uint256,address)` and selector `0x1e966b97` #[derive( Clone, ::ethers::contract::EthAbiType, @@ -24698,7 +28596,7 @@ abi_errors.append(&mut __abi_errors_2()); Eq, Hash )] - pub struct StakeBalanceOfReturn(pub ::ethers::core::types::U256); + pub struct ShouldKickValidatorReturn(pub bool); ///Container type for all return fields from the `stakerToValidatorsTheyStakedTo` function with signature `stakerToValidatorsTheyStakedTo(address)` and selector `0x6817d36e` #[derive( Clone, @@ -24743,6 +28641,102 @@ abi_errors.append(&mut __abi_errors_2()); Hash )] pub struct SupportsInterfaceReturn(pub bool); + ///Container type for all return fields from the `targetArtifactSelectors` function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct TargetArtifactSelectorsReturn { + pub targeted_artifact_selectors: ::std::vec::Vec, + } + ///Container type for all return fields from the `targetArtifacts` function with signature `targetArtifacts()` and selector `0x85226c81` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct TargetArtifactsReturn { + pub targeted_artifacts: ::std::vec::Vec<::std::string::String>, + } + ///Container type for all return fields from the `targetContracts` function with signature `targetContracts()` and selector `0x3f7286f4` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct TargetContractsReturn { + pub targeted_contracts: ::std::vec::Vec<::ethers::core::types::Address>, + } + ///Container type for all return fields from the `targetInterfaces` function with signature `targetInterfaces()` and selector `0x2ade3880` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct TargetInterfacesReturn { + pub targeted_interfaces: ::std::vec::Vec, + } + ///Container type for all return fields from the `targetSelectors` function with signature `targetSelectors()` and selector `0x916a17c6` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct TargetSelectorsReturn { + pub targeted_selectors: ::std::vec::Vec, + } + ///Container type for all return fields from the `targetSenders` function with signature `targetSenders()` and selector `0x3e5e3c23` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct TargetSendersReturn { + pub targeted_senders: ::std::vec::Vec<::ethers::core::types::Address>, + } ///Container type for all return fields from the `tokenOfOwnerByIndex` function with signature `tokenOfOwnerByIndex(address,uint256)` and selector `0x2f745c59` #[derive( Clone, @@ -25229,4 +29223,72 @@ abi_errors.append(&mut __abi_errors_2()); pub minor: ::ethers::core::types::U256, pub patch: ::ethers::core::types::U256, } + ///`TestValidator(address,uint256)` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct TestValidator { + pub staker_address: ::ethers::core::types::Address, + pub comms_key: ::ethers::core::types::U256, + } + ///`FuzzArtifactSelector(string,bytes4[])` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct FuzzArtifactSelector { + pub artifact: ::std::string::String, + pub selectors: ::std::vec::Vec<[u8; 4]>, + } + ///`FuzzInterface(address,string[])` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct FuzzInterface { + pub addr: ::ethers::core::types::Address, + pub artifacts: ::std::vec::Vec<::std::string::String>, + } + ///`FuzzSelector(address,bytes4[])` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct FuzzSelector { + pub addr: ::ethers::core::types::Address, + pub selectors: ::std::vec::Vec<[u8; 4]>, + } } diff --git a/rust/lit-core/lit-blockchain/abis/PKPHelper.json b/rust/lit-core/lit-blockchain/abis/PKPHelper.json index 434dd5f..d21fad7 100644 --- a/rust/lit-core/lit-blockchain/abis/PKPHelper.json +++ b/rust/lit-core/lit-blockchain/abis/PKPHelper.json @@ -1007,8 +1007,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50604051613a76380380613a7683398101604081905261002f916100d5565b61003833610085565b600280546001600160a01b0384166001600160a01b03198216811783558392916001600160a81b03191617600160a01b83838111156100795761007961011f565b02179055505050610135565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100e857600080fd5b82516001600160a01b03811681146100ff57600080fd5b60208401519092506003811061011457600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b613932806101446000396000f3fe60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a2646970667358221220589da1fa854004c1de9a6b07c7e95f2efa0b2e8281a555db436ee81b615d098b64736f6c634300081c0033", - "deployedBytecode": "0x60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a2646970667358221220589da1fa854004c1de9a6b07c7e95f2efa0b2e8281a555db436ee81b615d098b64736f6c634300081c0033", + "bytecode": "0x608060405234801561001057600080fd5b50604051613a76380380613a7683398101604081905261002f916100d5565b61003833610085565b600280546001600160a01b0384166001600160a01b03198216811783558392916001600160a81b03191617600160a01b83838111156100795761007961011f565b02179055505050610135565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100e857600080fd5b82516001600160a01b03811681146100ff57600080fd5b60208401519092506003811061011457600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b613932806101446000396000f3fe60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a26469706673582212209beb99f3ca4ca81d916f5f794cc06753e4c40d6ee549675381235e82d85c883f64736f6c634300081c0033", + "deployedBytecode": "0x60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a26469706673582212209beb99f3ca4ca81d916f5f794cc06753e4c40d6ee549675381235e82d85c883f64736f6c634300081c0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/rust/lit-core/lit-blockchain/abis/Staking.json b/rust/lit-core/lit-blockchain/abis/Staking.json index 479101e..29edb7b 100644 --- a/rust/lit-core/lit-blockchain/abis/Staking.json +++ b/rust/lit-core/lit-blockchain/abis/Staking.json @@ -2458,6 +2458,25 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "stakerAddress", + "type": "address" + } + ], + "name": "selfStakeBalanceOf", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -2530,25 +2549,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [ - { - "internalType": "address", - "name": "stakerAddress", - "type": "address" - } - ], - "name": "stakeBalanceOf", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [ { @@ -2873,6 +2873,11 @@ "name": "ERC721TransferToNonERC721ReceiverImplementer", "type": "error" }, + { + "inputs": [], + "name": "NoEmptyStakeRecordSlots", + "type": "error" + }, { "inputs": [], "name": "NotApprovedOrOwner", @@ -3025,86 +3030,1023 @@ "type": "function" }, { - "inputs": [ - { - "internalType": "address", - "name": "owner", - "type": "address" - }, - { - "internalType": "address", - "name": "operator", - "type": "address" - } - ], - "name": "isApprovedForAll", + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "address", + "name": "operator", + "type": "address" + } + ], + "name": "isApprovedForAll", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownerOf", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "ownershipChange", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + }, + { + "internalType": "bytes", + "name": "data", + "type": "bytes" + } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "operator", + "type": "address" + }, + { + "internalType": "bool", + "name": "approved", + "type": "bool" + } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + }, + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "tokenToStakeRecord", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "operatorStakerAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "stakeRecordId", + "type": "uint256" + } + ], + "internalType": "struct LibStakingStorage.MappedStakeRecord", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "from", + "type": "address" + }, + { + "internalType": "address", + "name": "to", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint256", + "name": "validatorId", + "type": "uint256" + } + ], + "name": "RequestToJoin", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "validatorId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "recordId", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "rewards", + "type": "uint256" + } + ], + "name": "StakeRewardsClaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "", + "type": "string" + } + ], + "name": "log", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "log_address", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256[]", + "name": "val", + "type": "uint256[]" + } + ], + "name": "log_array", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "int256[]", + "name": "val", + "type": "int256[]" + } + ], + "name": "log_array", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "address[]", + "name": "val", + "type": "address[]" + } + ], + "name": "log_array", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "log_bytes", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes32", + "name": "", + "type": "bytes32" + } + ], + "name": "log_bytes32", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "int256", + "name": "", + "type": "int256" + } + ], + "name": "log_int", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "address", + "name": "val", + "type": "address" + } + ], + "name": "log_named_address", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256[]", + "name": "val", + "type": "uint256[]" + } + ], + "name": "log_named_array", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "int256[]", + "name": "val", + "type": "int256[]" + } + ], + "name": "log_named_array", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "address[]", + "name": "val", + "type": "address[]" + } + ], + "name": "log_named_array", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes", + "name": "val", + "type": "bytes" + } + ], + "name": "log_named_bytes", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "bytes32", + "name": "val", + "type": "bytes32" + } + ], + "name": "log_named_bytes32", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "int256", + "name": "val", + "type": "int256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "decimals", + "type": "uint256" + } + ], + "name": "log_named_decimal_int", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "val", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "decimals", + "type": "uint256" + } + ], + "name": "log_named_decimal_uint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "int256", + "name": "val", + "type": "int256" + } + ], + "name": "log_named_int", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "string", + "name": "val", + "type": "string" + } + ], + "name": "log_named_string", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "key", + "type": "string" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "val", + "type": "uint256" + } + ], + "name": "log_named_uint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "string", + "name": "", + "type": "string" + } + ], + "name": "log_string", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "name": "log_uint", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bytes", + "name": "", + "type": "bytes" + } + ], + "name": "logs", + "type": "event" + }, + { + "inputs": [], + "name": "IS_TEST", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numAddresses", + "type": "uint256" + } + ], + "name": "_generateAddresses", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numAddresses", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "offset", + "type": "uint256" + } + ], + "name": "_generateAddressesWithOffset", + "outputs": [ + { + "internalType": "address[]", + "name": "", + "type": "address[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "stakers", + "type": "uint256" + } + ], + "name": "_generatePubKeys", + "outputs": [ + { + "internalType": "bytes[]", + "name": "", + "type": "bytes[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numUint256s", + "type": "uint256" + } + ], + "name": "_generateUint256s", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numUint256s", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "offset", + "type": "uint256" + } + ], + "name": "_generateUint256sWithOffset", + "outputs": [ + { + "internalType": "uint256[]", + "name": "", + "type": "uint256[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "numValidators", + "type": "uint256" + } + ], + "name": "_generateValidators", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "stakerAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "commsKey", + "type": "uint256" + } + ], + "internalType": "struct SetupAndUtils.TestValidator[]", + "name": "", + "type": "tuple[]" + } + ], + "stateMutability": "pure", + "type": "function" + }, + { + "inputs": [], + "name": "excludeArtifacts", + "outputs": [ + { + "internalType": "string[]", + "name": "excludedArtifacts_", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "excludeContracts", + "outputs": [ + { + "internalType": "address[]", + "name": "excludedContracts_", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "excludeSelectors", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "bytes4[]", + "name": "selectors", + "type": "bytes4[]" + } + ], + "internalType": "struct StdInvariant.FuzzSelector[]", + "name": "excludedSelectors_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "excludeSenders", + "outputs": [ + { + "internalType": "address[]", + "name": "excludedSenders_", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "failed", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "setUp", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "targetArtifactSelectors", + "outputs": [ + { + "components": [ + { + "internalType": "string", + "name": "artifact", + "type": "string" + }, + { + "internalType": "bytes4[]", + "name": "selectors", + "type": "bytes4[]" + } + ], + "internalType": "struct StdInvariant.FuzzArtifactSelector[]", + "name": "targetedArtifactSelectors_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "targetArtifacts", + "outputs": [ + { + "internalType": "string[]", + "name": "targetedArtifacts_", + "type": "string[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "targetContracts", + "outputs": [ + { + "internalType": "address[]", + "name": "targetedContracts_", + "type": "address[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "targetInterfaces", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "string[]", + "name": "artifacts", + "type": "string[]" + } + ], + "internalType": "struct StdInvariant.FuzzInterface[]", + "name": "targetedInterfaces_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "targetSelectors", + "outputs": [ + { + "components": [ + { + "internalType": "address", + "name": "addr", + "type": "address" + }, + { + "internalType": "bytes4[]", + "name": "selectors", + "type": "bytes4[]" + } + ], + "internalType": "struct StdInvariant.FuzzSelector[]", + "name": "targetedSelectors_", + "type": "tuple[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "targetSenders", "outputs": [ { - "internalType": "bool", - "name": "", - "type": "bool" + "internalType": "address[]", + "name": "targetedSenders_", + "type": "address[]" } ], "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "test_Stake", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ownerOf", - "outputs": [ - { - "internalType": "address", - "name": "", - "type": "address" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" } ], - "stateMutability": "view", + "name": "test_StakeAndTransfer", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - } - ], - "name": "ownershipChange", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" } ], - "stateMutability": "view", + "name": "test_StakeAndTransfer_ClaimRewards", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" }, { "internalType": "uint256", - "name": "tokenId", + "name": "operation", "type": "uint256" } ], - "name": "safeTransferFrom", + "name": "test_StakeAndTransfer_ReceiverMutatesStakeRecord", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -3112,45 +4054,25 @@ { "inputs": [ { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, - { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "data", - "type": "bytes" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" } ], - "name": "safeTransferFrom", + "name": "test_StakeAndTransfer_RevertNotOwner", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ - { - "internalType": "address", - "name": "operator", - "type": "address" - }, { "internalType": "bool", - "name": "approved", + "name": "isSafeTransfer", "type": "bool" } ], - "name": "setApprovalForAll", + "name": "test_StakeAndTransfer_TokenOwnerByIndex", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -3158,90 +4080,69 @@ { "inputs": [ { - "internalType": "address", - "name": "owner", - "type": "address" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" }, { - "internalType": "uint256", - "name": "index", - "type": "uint256" - } - ], - "name": "tokenOfOwnerByIndex", - "outputs": [ - { - "internalType": "uint256", - "name": "", - "type": "uint256" + "internalType": "bool", + "name": "isUnfreezeBeforeTransfer", + "type": "bool" } ], - "stateMutability": "view", + "name": "test_StakeAndTransfer_Withdraw", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { - "internalType": "uint256", - "name": "tokenId", - "type": "uint256" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" } ], - "name": "tokenToStakeRecord", - "outputs": [ + "name": "test_StakeApproveAndTransfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ { - "components": [ - { - "internalType": "address", - "name": "operatorStakerAddress", - "type": "address" - }, - { - "internalType": "uint256", - "name": "stakeRecordId", - "type": "uint256" - } - ], - "internalType": "struct LibStakingStorage.MappedStakeRecord", - "name": "", - "type": "tuple" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" } ], - "stateMutability": "view", + "name": "test_StakeApproveForAllAndTransfer", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { - "inputs": [], - "name": "totalSupply", - "outputs": [ + "inputs": [ { - "internalType": "uint256", - "name": "", - "type": "uint256" + "internalType": "bool", + "name": "isSafeTransfer", + "type": "bool" } ], - "stateMutability": "view", + "name": "test_StakeMax_TransferShouldFail", + "outputs": [], + "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ - { - "internalType": "address", - "name": "from", - "type": "address" - }, - { - "internalType": "address", - "name": "to", - "type": "address" - }, { "internalType": "uint256", - "name": "tokenId", + "name": "operation", "type": "uint256" } ], - "name": "transferFrom", + "name": "test_Stake_MutateStakeRecord", "outputs": [], "stateMutability": "nonpayable", "type": "function" @@ -5234,6 +6135,87 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "userStakerAddress", + "type": "address" + }, + { + "internalType": "address", + "name": "operatorStakerAddress", + "type": "address" + } + ], + "name": "getMostRecentStakeRecord", + "outputs": [ + { + "components": [ + { + "internalType": "uint256", + "name": "id", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "unfreezeStart", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "timeLock", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastUpdateTimestamp", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "lastRewardEpochClaimed", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "initialSharePrice", + "type": "uint256" + }, + { + "internalType": "bool", + "name": "loaded", + "type": "bool" + }, + { + "internalType": "bool", + "name": "frozen", + "type": "bool" + }, + { + "internalType": "address", + "name": "attributionAddress", + "type": "address" + }, + { + "internalType": "uint256", + "name": "tokenId", + "type": "uint256" + } + ], + "internalType": "struct LibStakingStorage.StakeRecord", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { diff --git a/rust/lit-core/lit-blockchain/src/contracts/staking.rs b/rust/lit-core/lit-blockchain/src/contracts/staking.rs index d75d741..4a5c6c9 100644 --- a/rust/lit-core/lit-blockchain/src/contracts/staking.rs +++ b/rust/lit-core/lit-blockchain/src/contracts/staking.rs @@ -20,6 +20,261 @@ pub mod staking { ::ethers::core::abi::ethabi::Contract { constructor: ::core::option::Option::None, functions: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("IS_TEST"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("IS_TEST"), + inputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("_generateAddresses"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("_generateAddresses"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("numAddresses"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address[]"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("_generateAddressesWithOffset"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "_generateAddressesWithOffset", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("numAddresses"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("offset"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address[]"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("_generatePubKeys"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("_generatePubKeys"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakers"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Bytes, + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes[]"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("_generateUint256s"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("_generateUint256s"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("numUint256s"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256[]"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("_generateUint256sWithOffset"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "_generateUint256sWithOffset", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("numUint256s"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("offset"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256[]"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("_generateValidators"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "_generateValidators", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("numValidators"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], + ), + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct SetupAndUtils.TestValidator[]", + ), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("addRealm"), ::std::vec![ @@ -1114,25 +1369,138 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("exit"), + ::std::borrow::ToOwned::to_owned("excludeArtifacts"), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("exit"), + name: ::std::borrow::ToOwned::to_owned("excludeArtifacts"), inputs: ::std::vec![], - outputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "excludedArtifacts_", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::String, + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string[]"), + ), + }, + ], constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, }, ], ), ( - ::std::borrow::ToOwned::to_owned("facetAddress"), + ::std::borrow::ToOwned::to_owned("excludeContracts"), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("facetAddress"), - inputs: ::std::vec![ + name: ::std::borrow::ToOwned::to_owned("excludeContracts"), + inputs: ::std::vec![], + outputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_functionSelector"), + name: ::std::borrow::ToOwned::to_owned( + "excludedContracts_", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address[]"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("excludeSelectors"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("excludeSelectors"), + inputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "excludedSelectors_", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize), + ), + ), + ], + ), + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct StdInvariant.FuzzSelector[]", + ), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("excludeSenders"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("excludeSenders"), + inputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("excludedSenders_"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address[]"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("exit"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("exit"), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::Pure, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("facetAddress"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("facetAddress"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_functionSelector"), kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( 4usize, ), @@ -1250,6 +1618,26 @@ pub mod staking { }, ], ), + ( + ::std::borrow::ToOwned::to_owned("failed"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("failed"), + inputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("getActiveUnkickedValidatorCount"), ::std::vec![ @@ -2201,6 +2589,61 @@ pub mod staking { }, ], ), + ( + ::std::borrow::ToOwned::to_owned("getMostRecentStakeRecord"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "getMostRecentStakeRecord", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("userStakerAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "operatorStakerAddress", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bool, + ::ethers::core::abi::ethabi::ParamType::Bool, + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct LibStakingStorage.StakeRecord", + ), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("getNodeAttestedPubKeyMappings"), ::std::vec![ @@ -5348,6 +5791,36 @@ pub mod staking { }, ], ), + ( + ::std::borrow::ToOwned::to_owned("selfStakeBalanceOf"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("selfStakeBalanceOf"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakerAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("setApprovalForAll"), ::std::vec![ @@ -6051,6 +6524,18 @@ pub mod staking { }, ], ), + ( + ::std::borrow::ToOwned::to_owned("setUp"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("setUp"), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), ( ::std::borrow::ToOwned::to_owned("setValidatorCommissionRate"), ::std::vec![ @@ -6225,36 +6710,6 @@ pub mod staking { }, ], ), - ( - ::std::borrow::ToOwned::to_owned("stakeBalanceOf"), - ::std::vec![ - ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("stakeBalanceOf"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakerAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], - outputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], - constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, - }, - ], - ), ( ::std::borrow::ToOwned::to_owned("stakerToValidatorsTheyStakedTo"), ::std::vec![ @@ -6352,38 +6807,62 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("tokenOfOwnerByIndex"), + ::std::borrow::ToOwned::to_owned("targetArtifactSelectors"), ::std::vec![ ::ethers::core::abi::ethabi::Function { name: ::std::borrow::ToOwned::to_owned( - "tokenOfOwnerByIndex", + "targetArtifactSelectors", ), - inputs: ::std::vec![ + inputs: ::std::vec![], + outputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + name: ::std::borrow::ToOwned::to_owned( + "targetedArtifactSelectors_", ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("index"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::String, + ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize), + ), + ), + ], + ), + ), ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned( + "struct StdInvariant.FuzzArtifactSelector[]", + ), ), }, ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("targetArtifacts"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("targetArtifacts"), + inputs: ::std::vec![], outputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + name: ::std::borrow::ToOwned::to_owned( + "targetedArtifacts_", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::String, + ), ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned("string[]"), ), }, ], @@ -6393,33 +6872,59 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("tokenToStakeRecord"), + ::std::borrow::ToOwned::to_owned("targetContracts"), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("tokenToStakeRecord"), - inputs: ::std::vec![ + name: ::std::borrow::ToOwned::to_owned("targetContracts"), + inputs: ::std::vec![], + outputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + name: ::std::borrow::ToOwned::to_owned( + "targetedContracts_", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned("address[]"), ), }, ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("targetInterfaces"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("targetInterfaces"), + inputs: ::std::vec![], outputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], + name: ::std::borrow::ToOwned::to_owned( + "targetedInterfaces_", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::String, + ), + ), + ], + ), + ), ), internal_type: ::core::option::Option::Some( ::std::borrow::ToOwned::to_owned( - "struct LibStakingStorage.MappedStakeRecord", + "struct StdInvariant.FuzzInterface[]", ), ), }, @@ -6430,19 +6935,34 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("totalSupply"), + ::std::borrow::ToOwned::to_owned("targetSelectors"), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("totalSupply"), + name: ::std::borrow::ToOwned::to_owned("targetSelectors"), inputs: ::std::vec![], outputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + name: ::std::borrow::ToOwned::to_owned( + "targetedSelectors_", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize), + ), + ), + ], + ), + ), ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned( + "struct StdInvariant.FuzzSelector[]", + ), ), }, ], @@ -6452,32 +6972,54 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("transferFrom"), + ::std::borrow::ToOwned::to_owned("targetSenders"), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferFrom"), - inputs: ::std::vec![ + name: ::std::borrow::ToOwned::to_owned("targetSenders"), + inputs: ::std::vec![], + outputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("from"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + name: ::std::borrow::ToOwned::to_owned("targetedSenders_"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("to"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("address[]"), ), }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("test_Stake"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("test_Stake"), + inputs: ::std::vec![], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("test_StakeAndTransfer"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "test_StakeAndTransfer", + ), + inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("tokenId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), + name: ::std::borrow::ToOwned::to_owned("isSafeTransfer"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned("bool"), ), }, ], @@ -6488,16 +7030,20 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("transferOwnership"), + ::std::borrow::ToOwned::to_owned( + "test_StakeAndTransfer_ClaimRewards", + ), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("transferOwnership"), + name: ::std::borrow::ToOwned::to_owned( + "test_StakeAndTransfer_ClaimRewards", + ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_newOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("isSafeTransfer"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("bool"), ), }, ], @@ -6508,22 +7054,24 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("unfreezeStake"), + ::std::borrow::ToOwned::to_owned( + "test_StakeAndTransfer_ReceiverMutatesStakeRecord", + ), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("unfreezeStake"), + name: ::std::borrow::ToOwned::to_owned( + "test_StakeAndTransfer_ReceiverMutatesStakeRecord", + ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "operatorStakerAddress", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("isSafeTransfer"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("bool"), ), }, ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakeId"), + name: ::std::borrow::ToOwned::to_owned("operation"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -6539,192 +7087,193 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("validatorSelfStakeWillExpire"), + ::std::borrow::ToOwned::to_owned( + "test_StakeAndTransfer_RevertNotOwner", + ), ::std::vec![ ::ethers::core::abi::ethabi::Function { name: ::std::borrow::ToOwned::to_owned( - "validatorSelfStakeWillExpire", + "test_StakeAndTransfer_RevertNotOwner", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("realmId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakerAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "stakerInCurrentValidatorSet", - ), + name: ::std::borrow::ToOwned::to_owned("isSafeTransfer"), kind: ::ethers::core::abi::ethabi::ParamType::Bool, internal_type: ::core::option::Option::Some( ::std::borrow::ToOwned::to_owned("bool"), ), }, ], - outputs: ::std::vec![ + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned( + "test_StakeAndTransfer_TokenOwnerByIndex", + ), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "test_StakeAndTransfer_TokenOwnerByIndex", + ), + inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), + name: ::std::borrow::ToOwned::to_owned("isSafeTransfer"), kind: ::ethers::core::abi::ethabi::ParamType::Bool, internal_type: ::core::option::Option::Some( ::std::borrow::ToOwned::to_owned("bool"), ), }, ], + outputs: ::std::vec![], constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, }, ], ), ( - ::std::borrow::ToOwned::to_owned("validator_by_staker_address"), + ::std::borrow::ToOwned::to_owned("test_StakeAndTransfer_Withdraw"), ::std::vec![ ::ethers::core::abi::ethabi::Function { name: ::std::borrow::ToOwned::to_owned( - "validator_by_staker_address", + "test_StakeAndTransfer_Withdraw", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakerAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("isSafeTransfer"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("bool"), ), }, - ], - outputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Uint(32usize), - ::ethers::core::abi::ethabi::ParamType::Uint(128usize), - ::ethers::core::abi::ethabi::ParamType::Uint(32usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bool, - ], + name: ::std::borrow::ToOwned::to_owned( + "isUnfreezeBeforeTransfer", ), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct LibStakingStorage.Validator", - ), + ::std::borrow::ToOwned::to_owned("bool"), ), }, ], + outputs: ::std::vec![], constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, }, ], ), ( - ::std::borrow::ToOwned::to_owned("validators"), + ::std::borrow::ToOwned::to_owned("test_StakeApproveAndTransfer"), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("validators"), + name: ::std::borrow::ToOwned::to_owned( + "test_StakeApproveAndTransfer", + ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakerAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("isSafeTransfer"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("bool"), ), }, ], - outputs: ::std::vec![ + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned( + "test_StakeApproveForAllAndTransfer", + ), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "test_StakeApproveForAllAndTransfer", + ), + inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Uint(32usize), - ::ethers::core::abi::ethabi::ParamType::Uint(128usize), - ::ethers::core::abi::ethabi::ParamType::Uint(32usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Address, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Bool, - ], - ), + name: ::std::borrow::ToOwned::to_owned("isSafeTransfer"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct LibStakingStorage.Validator", - ), + ::std::borrow::ToOwned::to_owned("bool"), ), }, ], + outputs: ::std::vec![], constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, }, ], ), ( - ::std::borrow::ToOwned::to_owned("verifyKeySetCounts"), + ::std::borrow::ToOwned::to_owned("test_StakeMax_TransferShouldFail"), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("verifyKeySetCounts"), + name: ::std::borrow::ToOwned::to_owned( + "test_StakeMax_TransferShouldFail", + ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("identifier"), - kind: ::ethers::core::abi::ethabi::ParamType::String, + name: ::std::borrow::ToOwned::to_owned("isSafeTransfer"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), + ::std::borrow::ToOwned::to_owned("bool"), ), }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("test_Stake_MutateStakeRecord"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "test_Stake_MutateStakeRecord", + ), + inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("newRootKeys"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Bytes, - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - ), + name: ::std::borrow::ToOwned::to_owned("operation"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "struct IPubkeyRouter.RootKey[]", - ), + ::std::borrow::ToOwned::to_owned("uint256"), ), }, ], - outputs: ::std::vec![ + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("tokenOfOwnerByIndex"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "tokenOfOwnerByIndex", + ), + inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::string::String::new(), + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("index"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -6732,6 +7281,8 @@ pub mod staking { ::std::borrow::ToOwned::to_owned("uint256"), ), }, + ], + outputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { name: ::std::string::String::new(), kind: ::ethers::core::abi::ethabi::ParamType::Uint( @@ -6748,255 +7299,610 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("withdraw"), + ::std::borrow::ToOwned::to_owned("tokenToStakeRecord"), ::std::vec![ ::ethers::core::abi::ethabi::Function { - name: ::std::borrow::ToOwned::to_owned("withdraw"), + name: ::std::borrow::ToOwned::to_owned("tokenToStakeRecord"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "operatorStakerAddress", + name: ::std::borrow::ToOwned::to_owned("tokenId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, ), - kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("uint256"), ), }, + ], + outputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakeRecordId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned( + "struct LibStakingStorage.MappedStakeRecord", + ), ), }, ], - outputs: ::std::vec![], constant: ::core::option::Option::None, - state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, }, ], ), - ]), - events: ::core::convert::From::from([ ( - ::std::borrow::ToOwned::to_owned("AdvancedEpoch"), + ::std::borrow::ToOwned::to_owned("totalSupply"), ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("AdvancedEpoch"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("realmId"), + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("totalSupply"), + inputs: ::std::vec![], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), - indexed: false, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("epochNumber"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), ), - indexed: false, }, ], - anonymous: false, + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, }, ], ), ( - ::std::borrow::ToOwned::to_owned("Approval"), + ::std::borrow::ToOwned::to_owned("transferFrom"), ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("Approval"), + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("transferFrom"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("from"), kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("approved"), + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("to"), kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), }, - ::ethers::core::abi::ethabi::EventParam { + ::ethers::core::abi::ethabi::Param { name: ::std::borrow::ToOwned::to_owned("tokenId"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), - indexed: true, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), }, ], - anonymous: false, + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, }, ], ), ( - ::std::borrow::ToOwned::to_owned("ApprovalForAll"), + ::std::borrow::ToOwned::to_owned("transferOwnership"), ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("ApprovalForAll"), + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("transferOwnership"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("owner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("operator"), + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_newOwner"), kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("approved"), - kind: ::ethers::core::abi::ethabi::ParamType::Bool, - indexed: false, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), }, ], - anonymous: false, + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, }, ], ), ( - ::std::borrow::ToOwned::to_owned("AttestedWalletRegistered"), + ::std::borrow::ToOwned::to_owned("unfreezeStake"), ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned( - "AttestedWalletRegistered", - ), + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("unfreezeStake"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("staker"), + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "operatorStakerAddress", + ), kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("attestedAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - indexed: true, - }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("attestedPubKey"), - kind: ::ethers::core::abi::ethabi::ParamType::Tuple( - ::std::vec![ - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), - ], - ), - indexed: true, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakeId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), }, ], - anonymous: false, + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, }, ], ), ( - ::std::borrow::ToOwned::to_owned("ClearOfflinePhaseData"), + ::std::borrow::ToOwned::to_owned("validatorSelfStakeWillExpire"), ::std::vec![ - ::ethers::core::abi::ethabi::Event { + ::ethers::core::abi::ethabi::Function { name: ::std::borrow::ToOwned::to_owned( - "ClearOfflinePhaseData", + "validatorSelfStakeWillExpire", ), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("dataType"), + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("realmId"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), - indexed: false, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakerAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "stakerInCurrentValidatorSet", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), }, ], - anonymous: false, + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bool"), + ), + }, + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, }, ], ), ( - ::std::borrow::ToOwned::to_owned("ComplaintConfigSet"), + ::std::borrow::ToOwned::to_owned("validator_by_staker_address"), ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("ComplaintConfigSet"), + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned( + "validator_by_staker_address", + ), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("reason"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakerAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), ), - indexed: false, }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("config"), + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), kind: ::ethers::core::abi::ethabi::ParamType::Tuple( ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + ::ethers::core::abi::ethabi::ParamType::Uint(128usize), + ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ::ethers::core::abi::ethabi::ParamType::Uint(256usize), ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bool, ], ), - indexed: false, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct LibStakingStorage.Validator", + ), + ), }, ], - anonymous: false, + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, }, ], ), ( - ::std::borrow::ToOwned::to_owned("ConfigSet"), + ::std::borrow::ToOwned::to_owned("validators"), ::std::vec![ - ::ethers::core::abi::ethabi::Event { - name: ::std::borrow::ToOwned::to_owned("ConfigSet"), + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("validators"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned( - "newTokenRewardPerTokenPerEpoch", + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakerAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), ), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + }, + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + ::ethers::core::abi::ethabi::ParamType::Uint(128usize), + ::ethers::core::abi::ethabi::ParamType::Uint(32usize), + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Address, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Bool, + ], + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct LibStakingStorage.Validator", + ), ), - indexed: false, }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned("newKeyTypes"), + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("verifyKeySetCounts"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("verifyKeySetCounts"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("identifier"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("newRootKeys"), kind: ::ethers::core::abi::ethabi::ParamType::Array( ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Bytes, + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], + ), + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned( + "struct IPubkeyRouter.RootKey[]", ), ), - indexed: false, }, - ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned( - "newMinimumValidatorCount", + ], + outputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::string::String::new(), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), - indexed: false, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), }, - ::ethers::core::abi::ethabi::EventParam { + ], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::View, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("withdraw"), + ::std::vec![ + ::ethers::core::abi::ethabi::Function { + name: ::std::borrow::ToOwned::to_owned("withdraw"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { name: ::std::borrow::ToOwned::to_owned( - "newMaxConcurrentRequests", + "operatorStakerAddress", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakeRecordId"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), - indexed: false, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), }, + ], + outputs: ::std::vec![], + constant: ::core::option::Option::None, + state_mutability: ::ethers::core::abi::ethabi::StateMutability::NonPayable, + }, + ], + ), + ]), + events: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("AdvancedEpoch"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("AdvancedEpoch"), + inputs: ::std::vec![ ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned( - "newMaxPresignCount", - ), + name: ::std::borrow::ToOwned::to_owned("realmId"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), indexed: false, }, ::ethers::core::abi::ethabi::EventParam { - name: ::std::borrow::ToOwned::to_owned( - "newMinPresignCount", - ), + name: ::std::borrow::ToOwned::to_owned("epochNumber"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("Approval"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("Approval"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("approved"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("tokenId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: true, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ApprovalForAll"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("ApprovalForAll"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("owner"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("operator"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("approved"), + kind: ::ethers::core::abi::ethabi::ParamType::Bool, + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("AttestedWalletRegistered"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned( + "AttestedWalletRegistered", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("staker"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("attestedAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: true, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("attestedPubKey"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], + ), + indexed: true, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ClearOfflinePhaseData"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned( + "ClearOfflinePhaseData", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("dataType"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ComplaintConfigSet"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("ComplaintConfigSet"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("reason"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("config"), + kind: ::ethers::core::abi::ethabi::ParamType::Tuple( + ::std::vec![ + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ], + ), + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ConfigSet"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("ConfigSet"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned( + "newTokenRewardPerTokenPerEpoch", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("newKeyTypes"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ), + ), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned( + "newMinimumValidatorCount", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned( + "newMaxConcurrentRequests", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned( + "newMaxPresignCount", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned( + "newMinPresignCount", + ), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -7397,6 +8303,19 @@ pub mod staking { ( ::std::borrow::ToOwned::to_owned("RequestToJoin"), ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("RequestToJoin"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("validatorId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: true, + }, + ], + anonymous: false, + }, ::ethers::core::abi::ethabi::Event { name: ::std::borrow::ToOwned::to_owned("RequestToJoin"), inputs: ::std::vec![ @@ -7593,6 +8512,35 @@ pub mod staking { ], anonymous: false, }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned( + "StakeRewardsClaimed", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("validatorId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("recordId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("rewards"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + indexed: false, + }, + ], + anonymous: false, + }, ], ), ( @@ -7927,418 +8875,504 @@ pub mod staking { }, ], ), - ]), - errors: ::core::convert::From::from([ - ( - ::std::borrow::ToOwned::to_owned("ActiveValidatorsCannotLeave"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "ActiveValidatorsCannotLeave", - ), - inputs: ::std::vec![], - }, - ], - ), ( - ::std::borrow::ToOwned::to_owned("CallerNotContract"), + ::std::borrow::ToOwned::to_owned("log"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("CallerNotContract"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("CallerNotOwner"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("CallerNotOwner"), - inputs: ::std::vec![], + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned("CallerNotOwnerOrDevopsAdmin"), + ::std::borrow::ToOwned::to_owned("log_address"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CallerNotOwnerOrDevopsAdmin", - ), - inputs: ::std::vec![], + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_address"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned( - "CannotAddFunctionToDiamondThatAlreadyExists", - ), + ::std::borrow::ToOwned::to_owned("log_array"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotAddFunctionToDiamondThatAlreadyExists", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_array"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_selector"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 4usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ), ), + indexed: false, }, ], + anonymous: false, }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("CannotAddSelectorsToZeroAddress"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotAddSelectorsToZeroAddress", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_array"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_selectors"), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), kind: ::ethers::core::abi::ethabi::ParamType::Array( ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize), + ::ethers::core::abi::ethabi::ParamType::Int(256usize), ), ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4[]"), + indexed: false, + }, + ], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_array"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), ), + indexed: false, }, ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned( - "CannotKickBelowCurrentValidatorThreshold", - ), + ::std::borrow::ToOwned::to_owned("log_bytes"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotKickBelowCurrentValidatorThreshold", - ), - inputs: ::std::vec![], + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_bytes"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + }, + ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned("CannotMigrateFromValidator"), + ::std::borrow::ToOwned::to_owned("log_bytes32"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotMigrateFromValidator", - ), - inputs: ::std::vec![], + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_bytes32"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( + 32usize, + ), + indexed: false, + }, + ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned("CannotModifyUnfrozen"), + ::std::borrow::ToOwned::to_owned("log_int"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotModifyUnfrozen", - ), - inputs: ::std::vec![], + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_int"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + indexed: false, + }, + ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned( - "CannotMoveToLockedValidatorStateBeforeEpochEnds", - ), + ::std::borrow::ToOwned::to_owned("log_named_address"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotMoveToLockedValidatorStateBeforeEpochEnds", - ), - inputs: ::std::vec![], + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_address"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + indexed: false, + }, + ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned("CannotRejoinBecauseBanned"), + ::std::borrow::ToOwned::to_owned("log_named_array"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotRejoinBecauseBanned", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_array"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakingAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Uint(256usize), + ), + ), + indexed: false, + }, + ], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_array"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Int(256usize), + ), ), + indexed: false, + }, + ], + anonymous: false, + }, + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_array"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + indexed: false, }, ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned( - "CannotRejoinUntilNextEpochBecauseKicked", - ), + ::std::borrow::ToOwned::to_owned("log_named_bytes"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotRejoinUntilNextEpochBecauseKicked", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_bytes"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakingAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, }, ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned( - "CannotRemoveFunctionThatDoesNotExist", - ), + ::std::borrow::ToOwned::to_owned("log_named_bytes32"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotRemoveFunctionThatDoesNotExist", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_bytes32"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_selector"), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 4usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), + 32usize, ), + indexed: false, }, ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned("CannotRemoveImmutableFunction"), + ::std::borrow::ToOwned::to_owned("log_named_decimal_int"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { + ::ethers::core::abi::ethabi::Event { name: ::std::borrow::ToOwned::to_owned( - "CannotRemoveImmutableFunction", + "log_named_decimal_int", ), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_selector"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 4usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("decimals"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, ), + indexed: false, }, ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned( - "CannotReplaceFunctionThatDoesNotExists", - ), + ::std::borrow::ToOwned::to_owned("log_named_decimal_uint"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { + ::ethers::core::abi::ethabi::Event { name: ::std::borrow::ToOwned::to_owned( - "CannotReplaceFunctionThatDoesNotExists", + "log_named_decimal_uint", ), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_selector"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 4usize, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("decimals"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, ), + indexed: false, }, ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned( - "CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet", - ), + ::std::borrow::ToOwned::to_owned("log_named_int"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_int"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_selector"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 4usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), - ), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Int(256usize), + indexed: false, }, ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned( - "CannotReplaceFunctionsFromFacetWithZeroAddress", - ), + ::std::borrow::ToOwned::to_owned("log_named_string"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotReplaceFunctionsFromFacetWithZeroAddress", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_string"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_selectors"), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize), - ), - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4[]"), - ), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, }, ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned("CannotReplaceImmutableFunction"), + ::std::borrow::ToOwned::to_owned("log_named_uint"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotReplaceImmutableFunction", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_named_uint"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_selector"), - kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( - 4usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes4"), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("key"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, + }, + ::ethers::core::abi::ethabi::EventParam { + name: ::std::borrow::ToOwned::to_owned("val"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, ), + indexed: false, }, ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned("CannotReuseCommsKeys"), + ::std::borrow::ToOwned::to_owned("log_string"), ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotReuseCommsKeys", - ), + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_string"), inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("senderPubKey"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), + ::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::String, + indexed: false, }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("receiverPubKey"), + ], + anonymous: false, + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("log_uint"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("log_uint"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), + indexed: false, }, ], + anonymous: false, }, ], ), ( - ::std::borrow::ToOwned::to_owned("CannotStakeZero"), + ::std::borrow::ToOwned::to_owned("logs"), + ::std::vec![ + ::ethers::core::abi::ethabi::Event { + name: ::std::borrow::ToOwned::to_owned("logs"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::EventParam { + name: ::std::string::String::new(), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, + indexed: false, + }, + ], + anonymous: false, + }, + ], + ), + ]), + errors: ::core::convert::From::from([ + ( + ::std::borrow::ToOwned::to_owned("ActiveValidatorsCannotLeave"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("CannotStakeZero"), + name: ::std::borrow::ToOwned::to_owned( + "ActiveValidatorsCannotLeave", + ), inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("CannotVoteTwice"), + ::std::borrow::ToOwned::to_owned("CallerNotContract"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("CannotVoteTwice"), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakerAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], + name: ::std::borrow::ToOwned::to_owned("CallerNotContract"), + inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("CannotWithdrawFrozen"), + ::std::borrow::ToOwned::to_owned("CallerNotOwner"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "CannotWithdrawFrozen", - ), + name: ::std::borrow::ToOwned::to_owned("CallerNotOwner"), inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("CannotWithdrawZero"), + ::std::borrow::ToOwned::to_owned("CallerNotOwnerOrDevopsAdmin"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("CannotWithdrawZero"), + name: ::std::borrow::ToOwned::to_owned( + "CallerNotOwnerOrDevopsAdmin", + ), inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("CheckpointAheadOfCurrentEpoch"), + ::std::borrow::ToOwned::to_owned( + "CannotAddFunctionToDiamondThatAlreadyExists", + ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "CheckpointAheadOfCurrentEpoch", + "CannotAddFunctionToDiamondThatAlreadyExists", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("checkpoint"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("currentEpoch"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + name: ::std::borrow::ToOwned::to_owned("_selector"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( + 4usize, ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned("bytes4"), ), }, ], @@ -8346,20 +9380,22 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned( - "CouldNotMapNodeAddressToStakerAddress", - ), + ::std::borrow::ToOwned::to_owned("CannotAddSelectorsToZeroAddress"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "CouldNotMapNodeAddressToStakerAddress", + "CannotAddSelectorsToZeroAddress", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("nodeAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("_selectors"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize), + ), + ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("bytes4[]"), ), }, ], @@ -8367,86 +9403,63 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("ERC721ReceiverRejectedTokens"), + ::std::borrow::ToOwned::to_owned( + "CannotKickBelowCurrentValidatorThreshold", + ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "ERC721ReceiverRejectedTokens", + "CannotKickBelowCurrentValidatorThreshold", ), inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned( - "ERC721TransferToNonERC721ReceiverImplementer", - ), + ::std::borrow::ToOwned::to_owned("CannotMigrateFromValidator"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "ERC721TransferToNonERC721ReceiverImplementer", + "CannotMigrateFromValidator", ), inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("IncorrectFacetCutAction"), + ::std::borrow::ToOwned::to_owned("CannotModifyUnfrozen"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "IncorrectFacetCutAction", + "CannotModifyUnfrozen", ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_action"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint8"), - ), - }, - ], + inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("InitializationFunctionReverted"), + ::std::borrow::ToOwned::to_owned( + "CannotMoveToLockedValidatorStateBeforeEpochEnds", + ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "InitializationFunctionReverted", + "CannotMoveToLockedValidatorStateBeforeEpochEnds", ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "_initializationContractAddress", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_calldata"), - kind: ::ethers::core::abi::ethabi::ParamType::Bytes, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("bytes"), - ), - }, - ], + inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("InsufficientSelfStake"), + ::std::borrow::ToOwned::to_owned("CannotRejoinBecauseBanned"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "InsufficientSelfStake", + "CannotRejoinBecauseBanned", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakerAddress"), + name: ::std::borrow::ToOwned::to_owned("stakingAddress"), kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( ::std::borrow::ToOwned::to_owned("address"), @@ -8457,78 +9470,20 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("InvalidAttestedAddress"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "InvalidAttestedAddress", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidNewSharePrice"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "InvalidNewSharePrice", - ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidRatio"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidRatio"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidSlashPercentage"), + ::std::borrow::ToOwned::to_owned( + "CannotRejoinUntilNextEpochBecauseKicked", + ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "InvalidSlashPercentage", + "CannotRejoinUntilNextEpochBecauseKicked", ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("InvalidTimeLock"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("InvalidTimeLock"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("MinTimeLockNotMet"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("MinTimeLockNotMet"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("timeLock"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("minTimeLock"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), + name: ::std::borrow::ToOwned::to_owned("stakingAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned("address"), ), }, ], @@ -8537,21 +9492,21 @@ pub mod staking { ), ( ::std::borrow::ToOwned::to_owned( - "MustBeInActiveOrUnlockedOrPausedState", + "CannotRemoveFunctionThatDoesNotExist", ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "MustBeInActiveOrUnlockedOrPausedState", + "CannotRemoveFunctionThatDoesNotExist", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("state"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + name: ::std::borrow::ToOwned::to_owned("_selector"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( + 4usize, + ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "enum LibStakingStorage.States", - ), + ::std::borrow::ToOwned::to_owned("bytes4"), ), }, ], @@ -8559,20 +9514,20 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("MustBeInActiveOrUnlockedState"), + ::std::borrow::ToOwned::to_owned("CannotRemoveImmutableFunction"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "MustBeInActiveOrUnlockedState", + "CannotRemoveImmutableFunction", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("state"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + name: ::std::borrow::ToOwned::to_owned("_selector"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( + 4usize, + ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "enum LibStakingStorage.States", - ), + ::std::borrow::ToOwned::to_owned("bytes4"), ), }, ], @@ -8581,21 +9536,21 @@ pub mod staking { ), ( ::std::borrow::ToOwned::to_owned( - "MustBeInNextValidatorSetLockedOrReadyForNextEpochOrRestoreState", + "CannotReplaceFunctionThatDoesNotExists", ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "MustBeInNextValidatorSetLockedOrReadyForNextEpochOrRestoreState", + "CannotReplaceFunctionThatDoesNotExists", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("state"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + name: ::std::borrow::ToOwned::to_owned("_selector"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( + 4usize, + ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "enum LibStakingStorage.States", - ), + ::std::borrow::ToOwned::to_owned("bytes4"), ), }, ], @@ -8604,21 +9559,21 @@ pub mod staking { ), ( ::std::borrow::ToOwned::to_owned( - "MustBeInNextValidatorSetLockedOrReadyForNextEpochState", + "CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet", ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "MustBeInNextValidatorSetLockedOrReadyForNextEpochState", + "CannotReplaceFunctionWithTheSameFunctionFromTheSameFacet", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("state"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + name: ::std::borrow::ToOwned::to_owned("_selector"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( + 4usize, + ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "enum LibStakingStorage.States", - ), + ::std::borrow::ToOwned::to_owned("bytes4"), ), }, ], @@ -8627,42 +9582,44 @@ pub mod staking { ), ( ::std::borrow::ToOwned::to_owned( - "MustBeInNextValidatorSetLockedState", + "CannotReplaceFunctionsFromFacetWithZeroAddress", ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "MustBeInNextValidatorSetLockedState", + "CannotReplaceFunctionsFromFacetWithZeroAddress", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("state"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "enum LibStakingStorage.States", + name: ::std::borrow::ToOwned::to_owned("_selectors"), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::FixedBytes(4usize), ), ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("bytes4[]"), + ), }, ], }, ], ), ( - ::std::borrow::ToOwned::to_owned("MustBeInReadyForNextEpochState"), + ::std::borrow::ToOwned::to_owned("CannotReplaceImmutableFunction"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "MustBeInReadyForNextEpochState", + "CannotReplaceImmutableFunction", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("state"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), + name: ::std::borrow::ToOwned::to_owned("_selector"), + kind: ::ethers::core::abi::ethabi::ParamType::FixedBytes( + 4usize, + ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned( - "enum LibStakingStorage.States", - ), + ::std::borrow::ToOwned::to_owned("bytes4"), ), }, ], @@ -8670,18 +9627,29 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("MustBeValidatorInNextEpochToKick"), + ::std::borrow::ToOwned::to_owned("CannotReuseCommsKeys"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "MustBeValidatorInNextEpochToKick", + "CannotReuseCommsKeys", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakerAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("senderPubKey"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("receiverPubKey"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), ), }, ], @@ -8689,112 +9657,75 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned( - "NewTimeLockMustBeGreaterThanCurrent", - ), + ::std::borrow::ToOwned::to_owned("CannotStakeZero"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "NewTimeLockMustBeGreaterThanCurrent", - ), + name: ::std::borrow::ToOwned::to_owned("CannotStakeZero"), inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("NoBytecodeAtAddress"), + ::std::borrow::ToOwned::to_owned("CannotVoteTwice"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "NoBytecodeAtAddress", - ), + name: ::std::borrow::ToOwned::to_owned("CannotVoteTwice"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_contractAddress"), + name: ::std::borrow::ToOwned::to_owned("stakerAddress"), kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( ::std::borrow::ToOwned::to_owned("address"), ), }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_message"), - kind: ::ethers::core::abi::ethabi::ParamType::String, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), - ), - }, ], }, ], ), ( - ::std::borrow::ToOwned::to_owned("NoEmptyStakingSlot"), + ::std::borrow::ToOwned::to_owned("CannotWithdrawFrozen"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("NoEmptyStakingSlot"), + name: ::std::borrow::ToOwned::to_owned( + "CannotWithdrawFrozen", + ), inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned( - "NoSelectorsProvidedForFacetForCut", - ), + ::std::borrow::ToOwned::to_owned("CannotWithdrawZero"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "NoSelectorsProvidedForFacetForCut", - ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_facetAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], + name: ::std::borrow::ToOwned::to_owned("CannotWithdrawZero"), + inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("NodeAddressNotFoundForStaker"), + ::std::borrow::ToOwned::to_owned("CheckpointAheadOfCurrentEpoch"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "NodeAddressNotFoundForStaker", + "CheckpointAheadOfCurrentEpoch", ), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("NotApprovedOrOwner"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("NotApprovedOrOwner"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("NotContractOwner"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("NotContractOwner"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_user"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("checkpoint"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("uint256"), ), }, ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_contractOwner"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("currentEpoch"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("uint256"), ), }, ], @@ -8803,103 +9734,62 @@ pub mod staking { ), ( ::std::borrow::ToOwned::to_owned( - "NotEnoughTimeElapsedForTimeoutSinceLastEpoch", + "CouldNotMapNodeAddressToStakerAddress", ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "NotEnoughTimeElapsedForTimeoutSinceLastEpoch", + "CouldNotMapNodeAddressToStakerAddress", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("currentTimestamp"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("epochEndTime"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("timeout"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), + name: ::std::borrow::ToOwned::to_owned("nodeAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned("address"), ), }, ], }, ], ), + ( + ::std::borrow::ToOwned::to_owned("ERC721ReceiverRejectedTokens"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "ERC721ReceiverRejectedTokens", + ), + inputs: ::std::vec![], + }, + ], + ), ( ::std::borrow::ToOwned::to_owned( - "NotEnoughTimeElapsedSinceLastEpoch", + "ERC721TransferToNonERC721ReceiverImplementer", ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "NotEnoughTimeElapsedSinceLastEpoch", + "ERC721TransferToNonERC721ReceiverImplementer", ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("currentTimestamp"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("epochEndTime"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ], + inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("NotEnoughValidatorsInNextEpoch"), + ::std::borrow::ToOwned::to_owned("IncorrectFacetCutAction"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "NotEnoughValidatorsInNextEpoch", + "IncorrectFacetCutAction", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("validatorCount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "minimumValidatorCount", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), + name: ::std::borrow::ToOwned::to_owned("_action"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned("uint8"), ), }, ], @@ -8907,46 +9797,27 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned( - "NotEnoughValidatorsReadyForNextEpoch", - ), + ::std::borrow::ToOwned::to_owned("InitializationFunctionReverted"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "NotEnoughValidatorsReadyForNextEpoch", + "InitializationFunctionReverted", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { name: ::std::borrow::ToOwned::to_owned( - "currentReadyValidatorCount", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "nextReadyValidatorCount", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, + "_initializationContractAddress", ), + kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned("address"), ), }, ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "minimumValidatorCountToBeReady", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), + name: ::std::borrow::ToOwned::to_owned("_calldata"), + kind: ::ethers::core::abi::ethabi::ParamType::Bytes, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned("bytes"), ), }, ], @@ -8954,19 +9825,12 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("NotOwner"), - ::std::vec![ - ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("NotOwner"), - inputs: ::std::vec![], - }, - ], - ), - ( - ::std::borrow::ToOwned::to_owned("RealmIdNotFound"), + ::std::borrow::ToOwned::to_owned("InsufficientSelfStake"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("RealmIdNotFound"), + name: ::std::borrow::ToOwned::to_owned( + "InsufficientSelfStake", + ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { name: ::std::borrow::ToOwned::to_owned("stakerAddress"), @@ -8980,58 +9844,64 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned( - "RemoveFacetAddressMustBeZeroAddress", - ), + ::std::borrow::ToOwned::to_owned("InvalidAttestedAddress"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "RemoveFacetAddressMustBeZeroAddress", + "InvalidAttestedAddress", ), - inputs: ::std::vec![ - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("_facetAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ], + inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("RewardsMustBeClaimed"), + ::std::borrow::ToOwned::to_owned("InvalidNewSharePrice"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "RewardsMustBeClaimed", + "InvalidNewSharePrice", ), inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("SameAddress"), + ::std::borrow::ToOwned::to_owned("InvalidRatio"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("SameAddress"), + name: ::std::borrow::ToOwned::to_owned("InvalidRatio"), inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("SignaledReadyForWrongEpochNumber"), + ::std::borrow::ToOwned::to_owned("InvalidSlashPercentage"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "SignaledReadyForWrongEpochNumber", + "InvalidSlashPercentage", ), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("InvalidTimeLock"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("InvalidTimeLock"), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("MinTimeLockNotMet"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("MinTimeLockNotMet"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "currentEpochNumber", - ), + name: ::std::borrow::ToOwned::to_owned("timeLock"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -9040,9 +9910,7 @@ pub mod staking { ), }, ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "receivedEpochNumber", - ), + name: ::std::borrow::ToOwned::to_owned("minTimeLock"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -9055,43 +9923,22 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("SlashingMustOccurInSameRealm"), + ::std::borrow::ToOwned::to_owned( + "MustBeInActiveOrUnlockedOrPausedState", + ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "SlashingMustOccurInSameRealm", + "MustBeInActiveOrUnlockedOrPausedState", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("slahedAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("state"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("slashedRealmId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("senderAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("senderRealmId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned( + "enum LibStakingStorage.States", + ), ), }, ], @@ -9099,18 +9946,20 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("StakeAmountNotMet"), + ::std::borrow::ToOwned::to_owned("MustBeInActiveOrUnlockedState"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("StakeAmountNotMet"), + name: ::std::borrow::ToOwned::to_owned( + "MustBeInActiveOrUnlockedState", + ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("amount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), + name: ::std::borrow::ToOwned::to_owned("state"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned( + "enum LibStakingStorage.States", + ), ), }, ], @@ -9119,37 +9968,67 @@ pub mod staking { ), ( ::std::borrow::ToOwned::to_owned( - "StakeMustBeGreaterThanMinimumStake", + "MustBeInNextValidatorSetLockedOrReadyForNextEpochOrRestoreState", ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "StakeMustBeGreaterThanMinimumStake", + "MustBeInNextValidatorSetLockedOrReadyForNextEpochOrRestoreState", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakerAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("state"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned( + "enum LibStakingStorage.States", + ), ), }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned( + "MustBeInNextValidatorSetLockedOrReadyForNextEpochState", + ), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "MustBeInNextValidatorSetLockedOrReadyForNextEpochState", + ), + inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakedAmount"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), + name: ::std::borrow::ToOwned::to_owned("state"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned( + "enum LibStakingStorage.States", + ), ), }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned( + "MustBeInNextValidatorSetLockedState", + ), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "MustBeInNextValidatorSetLockedState", + ), + inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("minimumStake"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), + name: ::std::borrow::ToOwned::to_owned("state"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned( + "enum LibStakingStorage.States", + ), ), }, ], @@ -9157,20 +10036,20 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("StakeRecordNotFound"), + ::std::borrow::ToOwned::to_owned("MustBeInReadyForNextEpochState"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "StakeRecordNotFound", + "MustBeInReadyForNextEpochState", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakeRecordId"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), + name: ::std::borrow::ToOwned::to_owned("state"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint(8usize), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned( + "enum LibStakingStorage.States", + ), ), }, ], @@ -9178,32 +10057,57 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("StakerAddressMismatch"), + ::std::borrow::ToOwned::to_owned("MustBeValidatorInNextEpochToKick"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "StakerAddressMismatch", + "MustBeValidatorInNextEpochToKick", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("senderAddress"), + name: ::std::borrow::ToOwned::to_owned("stakerAddress"), kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( ::std::borrow::ToOwned::to_owned("address"), ), }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned( + "NewTimeLockMustBeGreaterThanCurrent", + ), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "NewTimeLockMustBeGreaterThanCurrent", + ), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("NoBytecodeAtAddress"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "NoBytecodeAtAddress", + ), + inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("operatorAddress"), + name: ::std::borrow::ToOwned::to_owned("_contractAddress"), kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( ::std::borrow::ToOwned::to_owned("address"), ), }, ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("stakerAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("_message"), + kind: ::ethers::core::abi::ethabi::ParamType::String, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("string"), ), }, ], @@ -9211,49 +10115,40 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("TimeLockNotMet"), + ::std::borrow::ToOwned::to_owned("NoEmptyStakeRecordSlots"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("TimeLockNotMet"), + name: ::std::borrow::ToOwned::to_owned( + "NoEmptyStakeRecordSlots", + ), inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("TooSoonToWithdraw"), + ::std::borrow::ToOwned::to_owned("NoEmptyStakingSlot"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("TooSoonToWithdraw"), + name: ::std::borrow::ToOwned::to_owned("NoEmptyStakingSlot"), inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("TryingToWithdrawMoreThanStaked"), + ::std::borrow::ToOwned::to_owned( + "NoSelectorsProvidedForFacetForCut", + ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "TryingToWithdrawMoreThanStaked", + "NoSelectorsProvidedForFacetForCut", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("yourBalance"), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), - ), - }, - ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "requestedWithdrawlAmount", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Uint( - 256usize, - ), + name: ::std::borrow::ToOwned::to_owned("_facetAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("uint256"), + ::std::borrow::ToOwned::to_owned("address"), ), }, ], @@ -9261,17 +10156,40 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned( - "ValidatorAlreadyInNextValidatorSet", - ), + ::std::borrow::ToOwned::to_owned("NodeAddressNotFoundForStaker"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "ValidatorAlreadyInNextValidatorSet", + "NodeAddressNotFoundForStaker", ), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("NotApprovedOrOwner"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NotApprovedOrOwner"), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("NotContractOwner"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("NotContractOwner"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("staker"), + name: ::std::borrow::ToOwned::to_owned("_user"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_contractOwner"), kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( ::std::borrow::ToOwned::to_owned("address"), @@ -9282,22 +10200,35 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("ValidatorAlreadyInRealm"), + ::std::borrow::ToOwned::to_owned( + "NotEnoughTimeElapsedForTimeoutSinceLastEpoch", + ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "ValidatorAlreadyInRealm", + "NotEnoughTimeElapsedForTimeoutSinceLastEpoch", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("staker"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("currentTimestamp"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("uint256"), ), }, ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("existingRealmId"), + name: ::std::borrow::ToOwned::to_owned("epochEndTime"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("timeout"), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -9310,31 +10241,31 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("ValidatorIsNotInNextEpoch"), + ::std::borrow::ToOwned::to_owned( + "NotEnoughTimeElapsedSinceLastEpoch", + ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "ValidatorIsNotInNextEpoch", + "NotEnoughTimeElapsedSinceLastEpoch", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("validator"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, - internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + name: ::std::borrow::ToOwned::to_owned("currentTimestamp"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), ), }, ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned( - "validatorsInNextEpoch", - ), - kind: ::ethers::core::abi::ethabi::ParamType::Array( - ::std::boxed::Box::new( - ::ethers::core::abi::ethabi::ParamType::Address, - ), + name: ::std::borrow::ToOwned::to_owned("epochEndTime"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address[]"), + ::std::borrow::ToOwned::to_owned("uint256"), ), }, ], @@ -9342,18 +10273,31 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("ValidatorNotInNextEpoch"), + ::std::borrow::ToOwned::to_owned("NotEnoughValidatorsInNextEpoch"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "ValidatorNotInNextEpoch", + "NotEnoughValidatorsInNextEpoch", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("staker"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned("validatorCount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "minimumValidatorCount", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), ), }, ], @@ -9361,22 +10305,41 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("ValidatorNotPermitted"), + ::std::borrow::ToOwned::to_owned( + "NotEnoughValidatorsReadyForNextEpoch", + ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "ValidatorNotPermitted", + "NotEnoughValidatorsReadyForNextEpoch", ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("validatorAddress"), - kind: ::ethers::core::abi::ethabi::ParamType::Address, + name: ::std::borrow::ToOwned::to_owned( + "currentReadyValidatorCount", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("address"), + ::std::borrow::ToOwned::to_owned("uint256"), ), }, ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("realmId"), + name: ::std::borrow::ToOwned::to_owned( + "nextReadyValidatorCount", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "minimumValidatorCountToBeReady", + ), kind: ::ethers::core::abi::ethabi::ParamType::Uint( 256usize, ), @@ -9389,15 +10352,22 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("ValidatorNotRegistered"), + ::std::borrow::ToOwned::to_owned("NotOwner"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned( - "ValidatorNotRegistered", - ), + name: ::std::borrow::ToOwned::to_owned("NotOwner"), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("RealmIdNotFound"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("RealmIdNotFound"), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("validatorAddress"), + name: ::std::borrow::ToOwned::to_owned("stakerAddress"), kind: ::ethers::core::abi::ethabi::ParamType::Address, internal_type: ::core::option::Option::Some( ::std::borrow::ToOwned::to_owned("address"), @@ -9409,28 +10379,73 @@ pub mod staking { ), ( ::std::borrow::ToOwned::to_owned( - "ValidatorRegisterAttestedWalletDisabled", + "RemoveFacetAddressMustBeZeroAddress", ), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { name: ::std::borrow::ToOwned::to_owned( - "ValidatorRegisterAttestedWalletDisabled", + "RemoveFacetAddressMustBeZeroAddress", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("_facetAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("RewardsMustBeClaimed"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "RewardsMustBeClaimed", ), inputs: ::std::vec![], }, ], ), ( - ::std::borrow::ToOwned::to_owned("ValueMustBeNonzero"), + ::std::borrow::ToOwned::to_owned("SameAddress"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("ValueMustBeNonzero"), + name: ::std::borrow::ToOwned::to_owned("SameAddress"), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("SignaledReadyForWrongEpochNumber"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "SignaledReadyForWrongEpochNumber", + ), inputs: ::std::vec![ ::ethers::core::abi::ethabi::Param { - name: ::std::borrow::ToOwned::to_owned("valueName"), - kind: ::ethers::core::abi::ethabi::ParamType::String, + name: ::std::borrow::ToOwned::to_owned( + "currentEpochNumber", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), internal_type: ::core::option::Option::Some( - ::std::borrow::ToOwned::to_owned("string"), + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "receivedEpochNumber", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), ), }, ], @@ -9438,63 +10453,526 @@ pub mod staking { ], ), ( - ::std::borrow::ToOwned::to_owned("ZeroAddress"), + ::std::borrow::ToOwned::to_owned("SlashingMustOccurInSameRealm"), ::std::vec![ ::ethers::core::abi::ethabi::AbiError { - name: ::std::borrow::ToOwned::to_owned("ZeroAddress"), - inputs: ::std::vec![], + name: ::std::borrow::ToOwned::to_owned( + "SlashingMustOccurInSameRealm", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("slahedAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("slashedRealmId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("senderAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("senderRealmId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], }, ], ), - ]), - receive: false, - fallback: false, - } - } - ///The parsed JSON ABI of the contract. - pub static STAKING_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( - __abi, - ); - pub struct Staking(::ethers::contract::Contract); - impl ::core::clone::Clone for Staking { - fn clone(&self) -> Self { - Self(::core::clone::Clone::clone(&self.0)) - } - } - impl ::core::ops::Deref for Staking { - type Target = ::ethers::contract::Contract; - fn deref(&self) -> &Self::Target { - &self.0 - } - } - impl ::core::ops::DerefMut for Staking { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } - } - impl ::core::fmt::Debug for Staking { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { - f.debug_tuple(::core::stringify!(Staking)).field(&self.address()).finish() - } - } - impl Staking { - /// Creates a new contract instance with the specified `ethers` client at - /// `address`. The contract derefs to a `ethers::Contract` object. - pub fn new>( - address: T, - client: ::std::sync::Arc, - ) -> Self { - Self( - ::ethers::contract::Contract::new( - address.into(), - STAKING_ABI.clone(), - client, + ( + ::std::borrow::ToOwned::to_owned("StakeAmountNotMet"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("StakeAmountNotMet"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("amount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + }, + ], ), - ) - } - ///Calls the contract's `addRealm` (0x472a7d89) function - pub fn add_realm( - &self, + ( + ::std::borrow::ToOwned::to_owned( + "StakeMustBeGreaterThanMinimumStake", + ), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "StakeMustBeGreaterThanMinimumStake", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakerAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakedAmount"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("minimumStake"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("StakeRecordNotFound"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "StakeRecordNotFound", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakeRecordId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("StakerAddressMismatch"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "StakerAddressMismatch", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("senderAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("operatorAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("stakerAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("TimeLockNotMet"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("TimeLockNotMet"), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("TooSoonToWithdraw"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("TooSoonToWithdraw"), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("TryingToWithdrawMoreThanStaked"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "TryingToWithdrawMoreThanStaked", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("yourBalance"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "requestedWithdrawlAmount", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned( + "ValidatorAlreadyInNextValidatorSet", + ), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "ValidatorAlreadyInNextValidatorSet", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("staker"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ValidatorAlreadyInRealm"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "ValidatorAlreadyInRealm", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("staker"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("existingRealmId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ValidatorIsNotInNextEpoch"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "ValidatorIsNotInNextEpoch", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("validator"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned( + "validatorsInNextEpoch", + ), + kind: ::ethers::core::abi::ethabi::ParamType::Array( + ::std::boxed::Box::new( + ::ethers::core::abi::ethabi::ParamType::Address, + ), + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address[]"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ValidatorNotInNextEpoch"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "ValidatorNotInNextEpoch", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("staker"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ValidatorNotPermitted"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "ValidatorNotPermitted", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("validatorAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("realmId"), + kind: ::ethers::core::abi::ethabi::ParamType::Uint( + 256usize, + ), + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("uint256"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ValidatorNotRegistered"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "ValidatorNotRegistered", + ), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("validatorAddress"), + kind: ::ethers::core::abi::ethabi::ParamType::Address, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("address"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned( + "ValidatorRegisterAttestedWalletDisabled", + ), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned( + "ValidatorRegisterAttestedWalletDisabled", + ), + inputs: ::std::vec![], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ValueMustBeNonzero"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("ValueMustBeNonzero"), + inputs: ::std::vec![ + ::ethers::core::abi::ethabi::Param { + name: ::std::borrow::ToOwned::to_owned("valueName"), + kind: ::ethers::core::abi::ethabi::ParamType::String, + internal_type: ::core::option::Option::Some( + ::std::borrow::ToOwned::to_owned("string"), + ), + }, + ], + }, + ], + ), + ( + ::std::borrow::ToOwned::to_owned("ZeroAddress"), + ::std::vec![ + ::ethers::core::abi::ethabi::AbiError { + name: ::std::borrow::ToOwned::to_owned("ZeroAddress"), + inputs: ::std::vec![], + }, + ], + ), + ]), + receive: false, + fallback: false, + } + } + ///The parsed JSON ABI of the contract. + pub static STAKING_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new( + __abi, + ); + pub struct Staking(::ethers::contract::Contract); + impl ::core::clone::Clone for Staking { + fn clone(&self) -> Self { + Self(::core::clone::Clone::clone(&self.0)) + } + } + impl ::core::ops::Deref for Staking { + type Target = ::ethers::contract::Contract; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + impl ::core::ops::DerefMut for Staking { + fn deref_mut(&mut self) -> &mut Self::Target { + &mut self.0 + } + } + impl ::core::fmt::Debug for Staking { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + f.debug_tuple(::core::stringify!(Staking)).field(&self.address()).finish() + } + } + impl Staking { + /// Creates a new contract instance with the specified `ethers` client at + /// `address`. The contract derefs to a `ethers::Contract` object. + pub fn new>( + address: T, + client: ::std::sync::Arc, + ) -> Self { + Self( + ::ethers::contract::Contract::new( + address.into(), + STAKING_ABI.clone(), + client, + ), + ) + } + ///Calls the contract's `IS_TEST` (0xfa7626d4) function + pub fn is_test(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([250, 118, 38, 212], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `_generateAddresses` (0x678ac78a) function + pub fn generate_addresses( + &self, + num_addresses: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::ethers::core::types::Address>, + > { + self.0 + .method_hash([103, 138, 199, 138], num_addresses) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `_generateAddressesWithOffset` (0xa5187b2b) function + pub fn generate_addresses_with_offset( + &self, + num_addresses: ::ethers::core::types::U256, + offset: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::ethers::core::types::Address>, + > { + self.0 + .method_hash([165, 24, 123, 43], (num_addresses, offset)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `_generatePubKeys` (0xfed0a77b) function + pub fn generate_pub_keys( + &self, + stakers: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::ethers::core::types::Bytes>, + > { + self.0 + .method_hash([254, 208, 167, 123], stakers) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `_generateUint256s` (0xae517f4d) function + pub fn generate_uint_25_6s( + &self, + num_uint_25_6s: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::ethers::core::types::U256>, + > { + self.0 + .method_hash([174, 81, 127, 77], num_uint_25_6s) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `_generateUint256sWithOffset` (0xfb9d55b8) function + pub fn generate_uint_25_6s_with_offset( + &self, + num_uint_25_6s: ::ethers::core::types::U256, + offset: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::ethers::core::types::U256>, + > { + self.0 + .method_hash([251, 157, 85, 184], (num_uint_25_6s, offset)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `_generateValidators` (0xc5344d40) function + pub fn generate_validators( + &self, + num_validators: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec, + > { + self.0 + .method_hash([197, 52, 77, 64], num_validators) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `addRealm` (0x472a7d89) function + pub fn add_realm( + &self, ) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash([71, 42, 125, 137], ()) @@ -9830,6 +11308,50 @@ pub mod staking { .method_hash([84, 135, 197, 119], realm_id) .expect("method not found (this should never happen)") } + ///Calls the contract's `excludeArtifacts` (0xb5508aa9) function + pub fn exclude_artifacts( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::std::string::String>, + > { + self.0 + .method_hash([181, 80, 138, 169], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `excludeContracts` (0xe20c9f71) function + pub fn exclude_contracts( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::ethers::core::types::Address>, + > { + self.0 + .method_hash([226, 12, 159, 113], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `excludeSelectors` (0xb0464fdc) function + pub fn exclude_selectors( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec, + > { + self.0 + .method_hash([176, 70, 79, 220], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `excludeSenders` (0x1ed7831c) function + pub fn exclude_senders( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::ethers::core::types::Address>, + > { + self.0 + .method_hash([30, 215, 131, 28], ()) + .expect("method not found (this should never happen)") + } ///Calls the contract's `exit` (0xe9fad8ee) function pub fn exit(&self) -> ::ethers::contract::builders::ContractCall { self.0 @@ -9876,6 +11398,12 @@ pub mod staking { .method_hash([122, 14, 214, 39], ()) .expect("method not found (this should never happen)") } + ///Calls the contract's `failed` (0xba414fa6) function + pub fn failed(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([186, 65, 79, 166], ()) + .expect("method not found (this should never happen)") + } ///Calls the contract's `getActiveUnkickedValidatorCount` (0x7a808c0d) function pub fn get_active_unkicked_validator_count( &self, @@ -10141,6 +11669,19 @@ pub mod staking { .method_hash([217, 187, 210, 120], ()) .expect("method not found (this should never happen)") } + ///Calls the contract's `getMostRecentStakeRecord` (0x7d0f412f) function + pub fn get_most_recent_stake_record( + &self, + user_staker_address: ::ethers::core::types::Address, + operator_staker_address: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [125, 15, 65, 47], + (user_staker_address, operator_staker_address), + ) + .expect("method not found (this should never happen)") + } ///Calls the contract's `getNodeAttestedPubKeyMappings` (0x88790aee) function pub fn get_node_attested_pub_key_mappings( &self, @@ -11063,6 +12604,15 @@ pub mod staking { .method_hash([184, 141, 79, 222], (from, to, token_id, data)) .expect("method not found (this should never happen)") } + ///Calls the contract's `selfStakeBalanceOf` (0xeddf837a) function + pub fn self_stake_balance_of( + &self, + staker_address: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([237, 223, 131, 122], staker_address) + .expect("method not found (this should never happen)") + } ///Calls the contract's `setApprovalForAll` (0xa22cb465) function pub fn set_approval_for_all( &self, @@ -11267,6 +12817,12 @@ pub mod staking { .method_hash([218, 116, 34, 40], forwarder) .expect("method not found (this should never happen)") } + ///Calls the contract's `setUp` (0x0a9254e4) function + pub fn set_up(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([10, 146, 84, 228], ()) + .expect("method not found (this should never happen)") + } ///Calls the contract's `setValidatorCommissionRate` (0x7149ab58) function pub fn set_validator_commission_rate( &self, @@ -11279,88 +12835,246 @@ pub mod staking { ///Calls the contract's `shouldKickValidator` (0x1e966b97) function pub fn should_kick_validator( &self, - realm_id: ::ethers::core::types::U256, - staker_address: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { + realm_id: ::ethers::core::types::U256, + staker_address: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([30, 150, 107, 151], (realm_id, staker_address)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `signalReadyForNextEpoch` (0x9a25bdee) function + pub fn signal_ready_for_next_epoch( + &self, + realm_id: ::ethers::core::types::U256, + epoch_number: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([154, 37, 189, 238], (realm_id, epoch_number)) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `splitStakeRecord` (0xf69ccb92) function + pub fn split_stake_record( + &self, + staker_address: ::ethers::core::types::Address, + stake_record_id: ::ethers::core::types::U256, + ratio: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [246, 156, 203, 146], + (staker_address, stake_record_id, ratio), + ) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `stake` (0x7628a37d) function + pub fn stake( + &self, + amount: ::ethers::core::types::U256, + time_lock: ::ethers::core::types::U256, + operator_staker_address: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash( + [118, 40, 163, 125], + (amount, time_lock, operator_staker_address), + ) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `stakerToValidatorsTheyStakedTo` (0x6817d36e) function + pub fn staker_to_validators_they_staked_to( + &self, + staker: ::ethers::core::types::Address, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::ethers::core::types::Address>, + > { + self.0 + .method_hash([104, 23, 211, 110], staker) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `state` (0x3e4f49e6) function + pub fn state( + &self, + realm_id: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([62, 79, 73, 230], realm_id) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `supportsInterface` (0x01ffc9a7) function + pub fn supports_interface( + &self, + interface_id: [u8; 4], + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([1, 255, 201, 167], interface_id) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `targetArtifactSelectors` (0x66d9a9a0) function + pub fn target_artifact_selectors( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec, + > { + self.0 + .method_hash([102, 217, 169, 160], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `targetArtifacts` (0x85226c81) function + pub fn target_artifacts( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::std::string::String>, + > { + self.0 + .method_hash([133, 34, 108, 129], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `targetContracts` (0x3f7286f4) function + pub fn target_contracts( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::ethers::core::types::Address>, + > { + self.0 + .method_hash([63, 114, 134, 244], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `targetInterfaces` (0x2ade3880) function + pub fn target_interfaces( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec, + > { + self.0 + .method_hash([42, 222, 56, 128], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `targetSelectors` (0x916a17c6) function + pub fn target_selectors( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec, + > { + self.0 + .method_hash([145, 106, 23, 198], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `targetSenders` (0x3e5e3c23) function + pub fn target_senders( + &self, + ) -> ::ethers::contract::builders::ContractCall< + M, + ::std::vec::Vec<::ethers::core::types::Address>, + > { + self.0 + .method_hash([62, 94, 60, 35], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `test_Stake` (0xdbab1cd7) function + pub fn test_stake(&self) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([219, 171, 28, 215], ()) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `test_StakeAndTransfer` (0xaaedca62) function + pub fn test_stake_and_transfer( + &self, + is_safe_transfer: bool, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([170, 237, 202, 98], is_safe_transfer) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `test_StakeAndTransfer_ClaimRewards` (0x96007d44) function + pub fn test_stake_and_transfer_claim_rewards( + &self, + is_safe_transfer: bool, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([150, 0, 125, 68], is_safe_transfer) + .expect("method not found (this should never happen)") + } + ///Calls the contract's `test_StakeAndTransfer_ReceiverMutatesStakeRecord` (0x6239b4f7) function + pub fn test_stake_and_transfer_receiver_mutates_stake_record( + &self, + is_safe_transfer: bool, + operation: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([30, 150, 107, 151], (realm_id, staker_address)) + .method_hash([98, 57, 180, 247], (is_safe_transfer, operation)) .expect("method not found (this should never happen)") } - ///Calls the contract's `signalReadyForNextEpoch` (0x9a25bdee) function - pub fn signal_ready_for_next_epoch( + ///Calls the contract's `test_StakeAndTransfer_RevertNotOwner` (0x5ad8b9a9) function + pub fn test_stake_and_transfer_revert_not_owner( &self, - realm_id: ::ethers::core::types::U256, - epoch_number: ::ethers::core::types::U256, + is_safe_transfer: bool, ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([154, 37, 189, 238], (realm_id, epoch_number)) + .method_hash([90, 216, 185, 169], is_safe_transfer) .expect("method not found (this should never happen)") } - ///Calls the contract's `splitStakeRecord` (0xf69ccb92) function - pub fn split_stake_record( + ///Calls the contract's `test_StakeAndTransfer_TokenOwnerByIndex` (0xa7319b44) function + pub fn test_stake_and_transfer_token_owner_by_index( &self, - staker_address: ::ethers::core::types::Address, - stake_record_id: ::ethers::core::types::U256, - ratio: ::ethers::core::types::U256, + is_safe_transfer: bool, ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash( - [246, 156, 203, 146], - (staker_address, stake_record_id, ratio), - ) + .method_hash([167, 49, 155, 68], is_safe_transfer) .expect("method not found (this should never happen)") } - ///Calls the contract's `stake` (0x7628a37d) function - pub fn stake( + ///Calls the contract's `test_StakeAndTransfer_Withdraw` (0x86ef1d4d) function + pub fn test_stake_and_transfer_withdraw( &self, - amount: ::ethers::core::types::U256, - time_lock: ::ethers::core::types::U256, - operator_staker_address: ::ethers::core::types::Address, + is_safe_transfer: bool, + is_unfreeze_before_transfer: bool, ) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash( - [118, 40, 163, 125], - (amount, time_lock, operator_staker_address), + [134, 239, 29, 77], + (is_safe_transfer, is_unfreeze_before_transfer), ) .expect("method not found (this should never happen)") } - ///Calls the contract's `stakeBalanceOf` (0xaf46aa08) function - pub fn stake_balance_of( + ///Calls the contract's `test_StakeApproveAndTransfer` (0x22e7a7ac) function + pub fn test_stake_approve_and_transfer( &self, - staker_address: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall { + is_safe_transfer: bool, + ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([175, 70, 170, 8], staker_address) + .method_hash([34, 231, 167, 172], is_safe_transfer) .expect("method not found (this should never happen)") } - ///Calls the contract's `stakerToValidatorsTheyStakedTo` (0x6817d36e) function - pub fn staker_to_validators_they_staked_to( + ///Calls the contract's `test_StakeApproveForAllAndTransfer` (0x78854e37) function + pub fn test_stake_approve_for_all_and_transfer( &self, - staker: ::ethers::core::types::Address, - ) -> ::ethers::contract::builders::ContractCall< - M, - ::std::vec::Vec<::ethers::core::types::Address>, - > { + is_safe_transfer: bool, + ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([104, 23, 211, 110], staker) + .method_hash([120, 133, 78, 55], is_safe_transfer) .expect("method not found (this should never happen)") } - ///Calls the contract's `state` (0x3e4f49e6) function - pub fn state( + ///Calls the contract's `test_StakeMax_TransferShouldFail` (0xb29fabc7) function + pub fn test_stake_max_transfer_should_fail( &self, - realm_id: ::ethers::core::types::U256, - ) -> ::ethers::contract::builders::ContractCall { + is_safe_transfer: bool, + ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([62, 79, 73, 230], realm_id) + .method_hash([178, 159, 171, 199], is_safe_transfer) .expect("method not found (this should never happen)") } - ///Calls the contract's `supportsInterface` (0x01ffc9a7) function - pub fn supports_interface( + ///Calls the contract's `test_Stake_MutateStakeRecord` (0xa90bb850) function + pub fn test_stake_mutate_stake_record( &self, - interface_id: [u8; 4], - ) -> ::ethers::contract::builders::ContractCall { + operation: ::ethers::core::types::U256, + ) -> ::ethers::contract::builders::ContractCall { self.0 - .method_hash([1, 255, 201, 167], interface_id) + .method_hash([169, 11, 184, 80], operation) .expect("method not found (this should never happen)") } ///Calls the contract's `tokenOfOwnerByIndex` (0x2f745c59) function @@ -11604,304 +13318,528 @@ pub mod staking { ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - EpochLengthSetFilter, + EpochLengthSetFilter, + > { + self.0.event() + } + ///Gets the contract's `EpochTimeoutSet` event + pub fn epoch_timeout_set_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + EpochTimeoutSetFilter, + > { + self.0.event() + } + ///Gets the contract's `FixedCostRewardsClaimed` event + pub fn fixed_cost_rewards_claimed_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + FixedCostRewardsClaimedFilter, + > { + self.0.event() + } + ///Gets the contract's `KeySetConfigSet` event + pub fn key_set_config_set_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + KeySetConfigSetFilter, + > { + self.0.event() + } + ///Gets the contract's `KeySetConfigUpdated` event + pub fn key_set_config_updated_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + KeySetConfigUpdatedFilter, + > { + self.0.event() + } + ///Gets the contract's `KickPenaltyPercentSet` event + pub fn kick_penalty_percent_set_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + KickPenaltyPercentSetFilter, + > { + self.0.event() + } + ///Gets the contract's `OwnershipTransferred` event + pub fn ownership_transferred_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + OwnershipTransferredFilter, + > { + self.0.event() + } + ///Gets the contract's `ReadyForNextEpoch` event + pub fn ready_for_next_epoch_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + ReadyForNextEpochFilter, + > { + self.0.event() + } + ///Gets the contract's `Recovered` event + pub fn recovered_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + RecoveredFilter, + > { + self.0.event() + } + ///Gets the contract's `RequestToJoin` event + pub fn request_to_join_1_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + RequestToJoin1Filter, + > { + self.0.event() + } + ///Gets the contract's `RequestToJoin` event + pub fn request_to_join_2_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + RequestToJoin2Filter, + > { + self.0.event() + } + ///Gets the contract's `RequestToLeave` event + pub fn request_to_leave_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + RequestToLeaveFilter, + > { + self.0.event() + } + ///Gets the contract's `ResolverContractAddressSet` event + pub fn resolver_contract_address_set_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + ResolverContractAddressSetFilter, + > { + self.0.event() + } + ///Gets the contract's `RewardsDurationUpdated` event + pub fn rewards_duration_updated_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + RewardsDurationUpdatedFilter, + > { + self.0.event() + } + ///Gets the contract's `StakeRecordCreated` event + pub fn stake_record_created_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + StakeRecordCreatedFilter, + > { + self.0.event() + } + ///Gets the contract's `StakeRecordRemoved` event + pub fn stake_record_removed_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + StakeRecordRemovedFilter, + > { + self.0.event() + } + ///Gets the contract's `StakeRecordUpdated` event + pub fn stake_record_updated_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + StakeRecordUpdatedFilter, + > { + self.0.event() + } + ///Gets the contract's `StakeRewardsClaimed` event + pub fn stake_rewards_claimed_1_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + StakeRewardsClaimed1Filter, + > { + self.0.event() + } + ///Gets the contract's `StakeRewardsClaimed` event + pub fn stake_rewards_claimed_2_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + StakeRewardsClaimed2Filter, + > { + self.0.event() + } + ///Gets the contract's `Staked` event + pub fn staked_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, StakedFilter> { + self.0.event() + } + ///Gets the contract's `StakingTokenSet` event + pub fn staking_token_set_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + StakingTokenSetFilter, + > { + self.0.event() + } + ///Gets the contract's `StateChanged` event + pub fn state_changed_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + StateChangedFilter, + > { + self.0.event() + } + ///Gets the contract's `Transfer` event + pub fn transfer_filter( + &self, + ) -> ::ethers::contract::builders::Event< + ::std::sync::Arc, + M, + TransferFilter, > { self.0.event() } - ///Gets the contract's `EpochTimeoutSet` event - pub fn epoch_timeout_set_filter( + ///Gets the contract's `TrustedForwarderSet` event + pub fn trusted_forwarder_set_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - EpochTimeoutSetFilter, + TrustedForwarderSetFilter, > { self.0.event() } - ///Gets the contract's `FixedCostRewardsClaimed` event - pub fn fixed_cost_rewards_claimed_filter( + ///Gets the contract's `ValidatorBanned` event + pub fn validator_banned_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - FixedCostRewardsClaimedFilter, + ValidatorBannedFilter, > { self.0.event() } - ///Gets the contract's `KeySetConfigSet` event - pub fn key_set_config_set_filter( + ///Gets the contract's `ValidatorCommissionClaimed` event + pub fn validator_commission_claimed_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - KeySetConfigSetFilter, + ValidatorCommissionClaimedFilter, > { self.0.event() } - ///Gets the contract's `KeySetConfigUpdated` event - pub fn key_set_config_updated_filter( + ///Gets the contract's `ValidatorKickedFromNextEpoch` event + pub fn validator_kicked_from_next_epoch_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - KeySetConfigUpdatedFilter, + ValidatorKickedFromNextEpochFilter, > { self.0.event() } - ///Gets the contract's `KickPenaltyPercentSet` event - pub fn kick_penalty_percent_set_filter( + ///Gets the contract's `ValidatorRegistered` event + pub fn validator_registered_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - KickPenaltyPercentSetFilter, + ValidatorRegisteredFilter, > { self.0.event() } - ///Gets the contract's `OwnershipTransferred` event - pub fn ownership_transferred_filter( + ///Gets the contract's `ValidatorRejoinedNextEpoch` event + pub fn validator_rejoined_next_epoch_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - OwnershipTransferredFilter, + ValidatorRejoinedNextEpochFilter, > { self.0.event() } - ///Gets the contract's `ReadyForNextEpoch` event - pub fn ready_for_next_epoch_filter( + ///Gets the contract's `VersionRequirementsUpdated` event + pub fn version_requirements_updated_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - ReadyForNextEpochFilter, + VersionRequirementsUpdatedFilter, > { self.0.event() } - ///Gets the contract's `Recovered` event - pub fn recovered_filter( + ///Gets the contract's `VoteToAdvanceTimeOutElapsed` event + pub fn vote_to_advance_time_out_elapsed_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - RecoveredFilter, + VoteToAdvanceTimeOutElapsedFilter, > { self.0.event() } - ///Gets the contract's `RequestToJoin` event - pub fn request_to_join_filter( + ///Gets the contract's `VotedToKickValidatorInNextEpoch` event + pub fn voted_to_kick_validator_in_next_epoch_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - RequestToJoinFilter, + VotedToKickValidatorInNextEpochFilter, > { self.0.event() } - ///Gets the contract's `RequestToLeave` event - pub fn request_to_leave_filter( + ///Gets the contract's `Withdrawn` event + pub fn withdrawn_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - RequestToLeaveFilter, + WithdrawnFilter, > { self.0.event() } - ///Gets the contract's `ResolverContractAddressSet` event - pub fn resolver_contract_address_set_filter( + ///Gets the contract's `log` event + pub fn log_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogFilter> { + self.0.event() + } + ///Gets the contract's `log_address` event + pub fn log_address_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - ResolverContractAddressSetFilter, + LogAddressFilter, > { self.0.event() } - ///Gets the contract's `RewardsDurationUpdated` event - pub fn rewards_duration_updated_filter( + ///Gets the contract's `log_array` event + pub fn log_array_1_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - RewardsDurationUpdatedFilter, + LogArray1Filter, > { self.0.event() } - ///Gets the contract's `StakeRecordCreated` event - pub fn stake_record_created_filter( + ///Gets the contract's `log_array` event + pub fn log_array_2_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - StakeRecordCreatedFilter, + LogArray2Filter, > { self.0.event() } - ///Gets the contract's `StakeRecordRemoved` event - pub fn stake_record_removed_filter( + ///Gets the contract's `log_array` event + pub fn log_array_3_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - StakeRecordRemovedFilter, + LogArray3Filter, > { self.0.event() } - ///Gets the contract's `StakeRecordUpdated` event - pub fn stake_record_updated_filter( + ///Gets the contract's `log_bytes` event + pub fn log_bytes_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - StakeRecordUpdatedFilter, + LogBytesFilter, > { self.0.event() } - ///Gets the contract's `StakeRewardsClaimed` event - pub fn stake_rewards_claimed_filter( + ///Gets the contract's `log_bytes32` event + pub fn log_bytes_32_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - StakeRewardsClaimedFilter, + LogBytes32Filter, > { self.0.event() } - ///Gets the contract's `Staked` event - pub fn staked_filter( + ///Gets the contract's `log_int` event + pub fn log_int_filter( &self, - ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, StakedFilter> { + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogIntFilter> { self.0.event() } - ///Gets the contract's `StakingTokenSet` event - pub fn staking_token_set_filter( + ///Gets the contract's `log_named_address` event + pub fn log_named_address_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - StakingTokenSetFilter, + LogNamedAddressFilter, > { self.0.event() } - ///Gets the contract's `StateChanged` event - pub fn state_changed_filter( + ///Gets the contract's `log_named_array` event + pub fn log_named_array_1_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - StateChangedFilter, + LogNamedArray1Filter, > { self.0.event() } - ///Gets the contract's `Transfer` event - pub fn transfer_filter( + ///Gets the contract's `log_named_array` event + pub fn log_named_array_2_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - TransferFilter, + LogNamedArray2Filter, > { self.0.event() } - ///Gets the contract's `TrustedForwarderSet` event - pub fn trusted_forwarder_set_filter( + ///Gets the contract's `log_named_array` event + pub fn log_named_array_3_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - TrustedForwarderSetFilter, + LogNamedArray3Filter, > { self.0.event() } - ///Gets the contract's `ValidatorBanned` event - pub fn validator_banned_filter( + ///Gets the contract's `log_named_bytes` event + pub fn log_named_bytes_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - ValidatorBannedFilter, + LogNamedBytesFilter, > { self.0.event() } - ///Gets the contract's `ValidatorCommissionClaimed` event - pub fn validator_commission_claimed_filter( + ///Gets the contract's `log_named_bytes32` event + pub fn log_named_bytes_32_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - ValidatorCommissionClaimedFilter, + LogNamedBytes32Filter, > { self.0.event() } - ///Gets the contract's `ValidatorKickedFromNextEpoch` event - pub fn validator_kicked_from_next_epoch_filter( + ///Gets the contract's `log_named_decimal_int` event + pub fn log_named_decimal_int_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - ValidatorKickedFromNextEpochFilter, + LogNamedDecimalIntFilter, > { self.0.event() } - ///Gets the contract's `ValidatorRegistered` event - pub fn validator_registered_filter( + ///Gets the contract's `log_named_decimal_uint` event + pub fn log_named_decimal_uint_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - ValidatorRegisteredFilter, + LogNamedDecimalUintFilter, > { self.0.event() } - ///Gets the contract's `ValidatorRejoinedNextEpoch` event - pub fn validator_rejoined_next_epoch_filter( + ///Gets the contract's `log_named_int` event + pub fn log_named_int_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - ValidatorRejoinedNextEpochFilter, + LogNamedIntFilter, > { self.0.event() } - ///Gets the contract's `VersionRequirementsUpdated` event - pub fn version_requirements_updated_filter( + ///Gets the contract's `log_named_string` event + pub fn log_named_string_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - VersionRequirementsUpdatedFilter, + LogNamedStringFilter, > { self.0.event() } - ///Gets the contract's `VoteToAdvanceTimeOutElapsed` event - pub fn vote_to_advance_time_out_elapsed_filter( + ///Gets the contract's `log_named_uint` event + pub fn log_named_uint_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - VoteToAdvanceTimeOutElapsedFilter, + LogNamedUintFilter, > { self.0.event() } - ///Gets the contract's `VotedToKickValidatorInNextEpoch` event - pub fn voted_to_kick_validator_in_next_epoch_filter( + ///Gets the contract's `log_string` event + pub fn log_string_filter( &self, ) -> ::ethers::contract::builders::Event< ::std::sync::Arc, M, - VotedToKickValidatorInNextEpochFilter, + LogStringFilter, > { self.0.event() } - ///Gets the contract's `Withdrawn` event - pub fn withdrawn_filter( + ///Gets the contract's `log_uint` event + pub fn log_uint_filter( &self, - ) -> ::ethers::contract::builders::Event< - ::std::sync::Arc, - M, - WithdrawnFilter, - > { + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogUintFilter> { + self.0.event() + } + ///Gets the contract's `logs` event + pub fn logs_filter( + &self, + ) -> ::ethers::contract::builders::Event<::std::sync::Arc, M, LogsFilter> { self.0.event() } /// Returns an `Event` builder for all the events of this contract. @@ -12739,6 +14677,21 @@ pub mod staking { pub contract_address: ::ethers::core::types::Address, pub message: ::std::string::String, } + ///Custom Error type `NoEmptyStakeRecordSlots` with signature `NoEmptyStakeRecordSlots()` and selector `0x6330eb87` + #[derive( + Clone, + ::ethers::contract::EthError, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[etherror(name = "NoEmptyStakeRecordSlots", abi = "NoEmptyStakeRecordSlots()")] + pub struct NoEmptyStakeRecordSlots; ///Custom Error type `NoEmptyStakingSlot` with signature `NoEmptyStakingSlot()` and selector `0xc3b03baa` #[derive( Clone, @@ -13409,6 +15362,7 @@ pub mod staking { MustBeValidatorInNextEpochToKick(MustBeValidatorInNextEpochToKick), NewTimeLockMustBeGreaterThanCurrent(NewTimeLockMustBeGreaterThanCurrent), NoBytecodeAtAddress(NoBytecodeAtAddress), + NoEmptyStakeRecordSlots(NoEmptyStakeRecordSlots), NoEmptyStakingSlot(NoEmptyStakingSlot), NoSelectorsProvidedForFacetForCut(NoSelectorsProvidedForFacetForCut), NodeAddressNotFoundForStaker(NodeAddressNotFoundForStaker), @@ -13694,6 +15648,11 @@ pub mod staking { ) { return Ok(Self::NoBytecodeAtAddress(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::NoEmptyStakeRecordSlots(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -13995,6 +15954,9 @@ pub mod staking { Self::NoBytecodeAtAddress(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::NoEmptyStakeRecordSlots(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::NoEmptyStakingSlot(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -14277,6 +16239,10 @@ pub mod staking { == ::selector() => { true } + _ if selector + == ::selector() => { + true + } _ if selector == ::selector() => { true @@ -14527,6 +16493,9 @@ pub mod staking { Self::NoBytecodeAtAddress(element) => { ::core::fmt::Display::fmt(element, f) } + Self::NoEmptyStakeRecordSlots(element) => { + ::core::fmt::Display::fmt(element, f) + } Self::NoEmptyStakingSlot(element) => { ::core::fmt::Display::fmt(element, f) } @@ -14856,6 +16825,11 @@ pub mod staking { Self::NoBytecodeAtAddress(value) } } + impl ::core::convert::From for StakingErrors { + fn from(value: NoEmptyStakeRecordSlots) -> Self { + Self::NoEmptyStakeRecordSlots(value) + } + } impl ::core::convert::From for StakingErrors { fn from(value: NoEmptyStakingSlot) -> Self { Self::NoEmptyStakingSlot(value) @@ -14942,81 +16916,404 @@ pub mod staking { Self::StakeAmountNotMet(value) } } - impl ::core::convert::From for StakingErrors { - fn from(value: StakeMustBeGreaterThanMinimumStake) -> Self { - Self::StakeMustBeGreaterThanMinimumStake(value) - } + impl ::core::convert::From for StakingErrors { + fn from(value: StakeMustBeGreaterThanMinimumStake) -> Self { + Self::StakeMustBeGreaterThanMinimumStake(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: StakeRecordNotFound) -> Self { + Self::StakeRecordNotFound(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: StakerAddressMismatch) -> Self { + Self::StakerAddressMismatch(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: TimeLockNotMet) -> Self { + Self::TimeLockNotMet(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: TooSoonToWithdraw) -> Self { + Self::TooSoonToWithdraw(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: TryingToWithdrawMoreThanStaked) -> Self { + Self::TryingToWithdrawMoreThanStaked(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: ValidatorAlreadyInNextValidatorSet) -> Self { + Self::ValidatorAlreadyInNextValidatorSet(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: ValidatorAlreadyInRealm) -> Self { + Self::ValidatorAlreadyInRealm(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: ValidatorIsNotInNextEpoch) -> Self { + Self::ValidatorIsNotInNextEpoch(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: ValidatorNotInNextEpoch) -> Self { + Self::ValidatorNotInNextEpoch(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: ValidatorNotPermitted) -> Self { + Self::ValidatorNotPermitted(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: ValidatorNotRegistered) -> Self { + Self::ValidatorNotRegistered(value) + } + } + impl ::core::convert::From + for StakingErrors { + fn from(value: ValidatorRegisterAttestedWalletDisabled) -> Self { + Self::ValidatorRegisterAttestedWalletDisabled(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: ValueMustBeNonzero) -> Self { + Self::ValueMustBeNonzero(value) + } + } + impl ::core::convert::From for StakingErrors { + fn from(value: ZeroAddress) -> Self { + Self::ZeroAddress(value) + } + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "AdvancedEpoch", abi = "AdvancedEpoch(uint256,uint256)")] + pub struct AdvancedEpochFilter { + pub realm_id: ::ethers::core::types::U256, + pub epoch_number: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] + pub struct ApprovalFilter { + #[ethevent(indexed)] + pub owner: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub approved: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub token_id: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "ApprovalForAll", abi = "ApprovalForAll(address,address,bool)")] + pub struct ApprovalForAllFilter { + #[ethevent(indexed)] + pub owner: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub operator: ::ethers::core::types::Address, + pub approved: bool, } - impl ::core::convert::From for StakingErrors { - fn from(value: StakeRecordNotFound) -> Self { - Self::StakeRecordNotFound(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent( + name = "AttestedWalletRegistered", + abi = "AttestedWalletRegistered(address,address,(uint256,uint256))" + )] + pub struct AttestedWalletRegisteredFilter { + #[ethevent(indexed)] + pub staker: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub attested_address: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub attested_pub_key: ::ethers::core::types::H256, } - impl ::core::convert::From for StakingErrors { - fn from(value: StakerAddressMismatch) -> Self { - Self::StakerAddressMismatch(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "ClearOfflinePhaseData", abi = "ClearOfflinePhaseData(uint256)")] + pub struct ClearOfflinePhaseDataFilter { + pub data_type: ::ethers::core::types::U256, } - impl ::core::convert::From for StakingErrors { - fn from(value: TimeLockNotMet) -> Self { - Self::TimeLockNotMet(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent( + name = "ComplaintConfigSet", + abi = "ComplaintConfigSet(uint256,(uint256,uint256,uint256,uint256))" + )] + pub struct ComplaintConfigSetFilter { + pub reason: ::ethers::core::types::U256, + pub config: ComplaintConfig, } - impl ::core::convert::From for StakingErrors { - fn from(value: TooSoonToWithdraw) -> Self { - Self::TooSoonToWithdraw(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent( + name = "ConfigSet", + abi = "ConfigSet(uint256,uint256[],uint256,uint256,uint256,uint256,uint256,uint256,bool)" + )] + pub struct ConfigSetFilter { + pub new_token_reward_per_token_per_epoch: ::ethers::core::types::U256, + pub new_key_types: ::std::vec::Vec<::ethers::core::types::U256>, + pub new_minimum_validator_count: ::ethers::core::types::U256, + pub new_max_concurrent_requests: ::ethers::core::types::U256, + pub new_max_presign_count: ::ethers::core::types::U256, + pub new_min_presign_count: ::ethers::core::types::U256, + pub new_peer_checking_interval_secs: ::ethers::core::types::U256, + pub new_max_presign_concurrency: ::ethers::core::types::U256, + pub new_rpc_healthcheck_enabled: bool, } - impl ::core::convert::From for StakingErrors { - fn from(value: TryingToWithdrawMoreThanStaked) -> Self { - Self::TryingToWithdrawMoreThanStaked(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "CountOfflinePhaseData", abi = "CountOfflinePhaseData(uint256)")] + pub struct CountOfflinePhaseDataFilter { + pub data_type: ::ethers::core::types::U256, } - impl ::core::convert::From for StakingErrors { - fn from(value: ValidatorAlreadyInNextValidatorSet) -> Self { - Self::ValidatorAlreadyInNextValidatorSet(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "DebugEvent", abi = "DebugEvent(string,address,uint256)")] + pub struct DebugEventFilter { + pub message: ::std::string::String, + pub sender: ::ethers::core::types::Address, + pub value: ::ethers::core::types::U256, } - impl ::core::convert::From for StakingErrors { - fn from(value: ValidatorAlreadyInRealm) -> Self { - Self::ValidatorAlreadyInRealm(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "DevopsAdminSet", abi = "DevopsAdminSet(address)")] + pub struct DevopsAdminSetFilter { + pub new_devops_admin: ::ethers::core::types::Address, } - impl ::core::convert::From for StakingErrors { - fn from(value: ValidatorIsNotInNextEpoch) -> Self { - Self::ValidatorIsNotInNextEpoch(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent( + name = "DiamondCut", + abi = "DiamondCut((address,uint8,bytes4[])[],address,bytes)" + )] + pub struct DiamondCutFilter { + pub diamond_cut: ::std::vec::Vec, + pub init: ::ethers::core::types::Address, + pub calldata: ::ethers::core::types::Bytes, } - impl ::core::convert::From for StakingErrors { - fn from(value: ValidatorNotInNextEpoch) -> Self { - Self::ValidatorNotInNextEpoch(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "EpochEndTimeSet", abi = "EpochEndTimeSet(uint256,uint256)")] + pub struct EpochEndTimeSetFilter { + pub realm_id: ::ethers::core::types::U256, + pub new_epoch_end_time: ::ethers::core::types::U256, } - impl ::core::convert::From for StakingErrors { - fn from(value: ValidatorNotPermitted) -> Self { - Self::ValidatorNotPermitted(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "EpochLengthSet", abi = "EpochLengthSet(uint256,uint256)")] + pub struct EpochLengthSetFilter { + pub realm_id: ::ethers::core::types::U256, + pub new_epoch_length: ::ethers::core::types::U256, } - impl ::core::convert::From for StakingErrors { - fn from(value: ValidatorNotRegistered) -> Self { - Self::ValidatorNotRegistered(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "EpochTimeoutSet", abi = "EpochTimeoutSet(uint256,uint256)")] + pub struct EpochTimeoutSetFilter { + pub realm_id: ::ethers::core::types::U256, + pub new_epoch_timeout: ::ethers::core::types::U256, } - impl ::core::convert::From - for StakingErrors { - fn from(value: ValidatorRegisterAttestedWalletDisabled) -> Self { - Self::ValidatorRegisterAttestedWalletDisabled(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent( + name = "FixedCostRewardsClaimed", + abi = "FixedCostRewardsClaimed(address,uint256,uint256,uint256)" + )] + pub struct FixedCostRewardsClaimedFilter { + pub staker_address: ::ethers::core::types::Address, + pub rewards: ::ethers::core::types::U256, + pub from_epoch: ::ethers::core::types::U256, + pub to_epoch: ::ethers::core::types::U256, } - impl ::core::convert::From for StakingErrors { - fn from(value: ValueMustBeNonzero) -> Self { - Self::ValueMustBeNonzero(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "KeySetConfigSet", abi = "KeySetConfigSet(bool,string,bytes32)")] + pub struct KeySetConfigSetFilter { + pub exists: bool, + pub identifier: ::std::string::String, + pub hashed: [u8; 32], } - impl ::core::convert::From for StakingErrors { - fn from(value: ZeroAddress) -> Self { - Self::ZeroAddress(value) - } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "KeySetConfigUpdated", abi = "KeySetConfigUpdated(string)")] + pub struct KeySetConfigUpdatedFilter { + pub identifier: ::std::string::String, } #[derive( Clone, @@ -15030,10 +17327,13 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "AdvancedEpoch", abi = "AdvancedEpoch(uint256,uint256)")] - pub struct AdvancedEpochFilter { - pub realm_id: ::ethers::core::types::U256, - pub epoch_number: ::ethers::core::types::U256, + #[ethevent( + name = "KickPenaltyPercentSet", + abi = "KickPenaltyPercentSet(uint256,uint256)" + )] + pub struct KickPenaltyPercentSetFilter { + pub reason: ::ethers::core::types::U256, + pub new_kick_penalty_percent: ::ethers::core::types::U256, } #[derive( Clone, @@ -15047,14 +17347,15 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "Approval", abi = "Approval(address,address,uint256)")] - pub struct ApprovalFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, + #[ethevent( + name = "OwnershipTransferred", + abi = "OwnershipTransferred(address,address)" + )] + pub struct OwnershipTransferredFilter { #[ethevent(indexed)] - pub approved: ::ethers::core::types::Address, + pub previous_owner: ::ethers::core::types::Address, #[ethevent(indexed)] - pub token_id: ::ethers::core::types::U256, + pub new_owner: ::ethers::core::types::Address, } #[derive( Clone, @@ -15068,13 +17369,11 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "ApprovalForAll", abi = "ApprovalForAll(address,address,bool)")] - pub struct ApprovalForAllFilter { - #[ethevent(indexed)] - pub owner: ::ethers::core::types::Address, + #[ethevent(name = "ReadyForNextEpoch", abi = "ReadyForNextEpoch(address,uint256)")] + pub struct ReadyForNextEpochFilter { #[ethevent(indexed)] - pub operator: ::ethers::core::types::Address, - pub approved: bool, + pub staker: ::ethers::core::types::Address, + pub epoch_number: ::ethers::core::types::U256, } #[derive( Clone, @@ -15088,17 +17387,61 @@ pub mod staking { Eq, Hash )] - #[ethevent( - name = "AttestedWalletRegistered", - abi = "AttestedWalletRegistered(address,address,(uint256,uint256))" + #[ethevent(name = "Recovered", abi = "Recovered(address,uint256)")] + pub struct RecoveredFilter { + pub token: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash )] - pub struct AttestedWalletRegisteredFilter { + #[ethevent(name = "RequestToJoin", abi = "RequestToJoin(uint256)")] + pub struct RequestToJoin1Filter { #[ethevent(indexed)] - pub staker: ::ethers::core::types::Address, + pub validator_id: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "RequestToJoin", abi = "RequestToJoin(address)")] + pub struct RequestToJoin2Filter { #[ethevent(indexed)] - pub attested_address: ::ethers::core::types::Address, + pub staker: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "RequestToLeave", abi = "RequestToLeave(address)")] + pub struct RequestToLeaveFilter { #[ethevent(indexed)] - pub attested_pub_key: ::ethers::core::types::H256, + pub staker: ::ethers::core::types::Address, } #[derive( Clone, @@ -15112,9 +17455,84 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "ClearOfflinePhaseData", abi = "ClearOfflinePhaseData(uint256)")] - pub struct ClearOfflinePhaseDataFilter { - pub data_type: ::ethers::core::types::U256, + #[ethevent( + name = "ResolverContractAddressSet", + abi = "ResolverContractAddressSet(address)" + )] + pub struct ResolverContractAddressSetFilter { + pub new_resolver_contract_address: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "RewardsDurationUpdated", abi = "RewardsDurationUpdated(uint256)")] + pub struct RewardsDurationUpdatedFilter { + pub new_duration: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent( + name = "StakeRecordCreated", + abi = "StakeRecordCreated(address,uint256,uint256,address)" + )] + pub struct StakeRecordCreatedFilter { + pub staker_address: ::ethers::core::types::Address, + pub record_id: ::ethers::core::types::U256, + pub amount: ::ethers::core::types::U256, + pub staker_address_client: ::ethers::core::types::Address, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "StakeRecordRemoved", abi = "StakeRecordRemoved(address,uint256)")] + pub struct StakeRecordRemovedFilter { + pub user_staker_address: ::ethers::core::types::Address, + pub record_id: ::ethers::core::types::U256, + } + #[derive( + Clone, + ::ethers::contract::EthEvent, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethevent(name = "StakeRecordUpdated", abi = "StakeRecordUpdated(address,uint256)")] + pub struct StakeRecordUpdatedFilter { + pub staker_address: ::ethers::core::types::Address, + pub record_id: ::ethers::core::types::U256, } #[derive( Clone, @@ -15129,12 +17547,15 @@ pub mod staking { Hash )] #[ethevent( - name = "ComplaintConfigSet", - abi = "ComplaintConfigSet(uint256,(uint256,uint256,uint256,uint256))" + name = "StakeRewardsClaimed", + abi = "StakeRewardsClaimed(address,uint256,uint256,uint256,uint256)" )] - pub struct ComplaintConfigSetFilter { - pub reason: ::ethers::core::types::U256, - pub config: ComplaintConfig, + pub struct StakeRewardsClaimed1Filter { + pub staker_address: ::ethers::core::types::Address, + pub record_id: ::ethers::core::types::U256, + pub rewards: ::ethers::core::types::U256, + pub from_epoch: ::ethers::core::types::U256, + pub to_epoch: ::ethers::core::types::U256, } #[derive( Clone, @@ -15149,19 +17570,13 @@ pub mod staking { Hash )] #[ethevent( - name = "ConfigSet", - abi = "ConfigSet(uint256,uint256[],uint256,uint256,uint256,uint256,uint256,uint256,bool)" + name = "StakeRewardsClaimed", + abi = "StakeRewardsClaimed(uint256,uint256,uint256)" )] - pub struct ConfigSetFilter { - pub new_token_reward_per_token_per_epoch: ::ethers::core::types::U256, - pub new_key_types: ::std::vec::Vec<::ethers::core::types::U256>, - pub new_minimum_validator_count: ::ethers::core::types::U256, - pub new_max_concurrent_requests: ::ethers::core::types::U256, - pub new_max_presign_count: ::ethers::core::types::U256, - pub new_min_presign_count: ::ethers::core::types::U256, - pub new_peer_checking_interval_secs: ::ethers::core::types::U256, - pub new_max_presign_concurrency: ::ethers::core::types::U256, - pub new_rpc_healthcheck_enabled: bool, + pub struct StakeRewardsClaimed2Filter { + pub validator_id: ::ethers::core::types::U256, + pub record_id: ::ethers::core::types::U256, + pub rewards: ::ethers::core::types::U256, } #[derive( Clone, @@ -15175,9 +17590,11 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "CountOfflinePhaseData", abi = "CountOfflinePhaseData(uint256)")] - pub struct CountOfflinePhaseDataFilter { - pub data_type: ::ethers::core::types::U256, + #[ethevent(name = "Staked", abi = "Staked(address,uint256)")] + pub struct StakedFilter { + #[ethevent(indexed)] + pub staker: ::ethers::core::types::Address, + pub amount: ::ethers::core::types::U256, } #[derive( Clone, @@ -15191,11 +17608,9 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "DebugEvent", abi = "DebugEvent(string,address,uint256)")] - pub struct DebugEventFilter { - pub message: ::std::string::String, - pub sender: ::ethers::core::types::Address, - pub value: ::ethers::core::types::U256, + #[ethevent(name = "StakingTokenSet", abi = "StakingTokenSet(address)")] + pub struct StakingTokenSetFilter { + pub new_staking_token_address: ::ethers::core::types::Address, } #[derive( Clone, @@ -15209,9 +17624,9 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "DevopsAdminSet", abi = "DevopsAdminSet(address)")] - pub struct DevopsAdminSetFilter { - pub new_devops_admin: ::ethers::core::types::Address, + #[ethevent(name = "StateChanged", abi = "StateChanged(uint8)")] + pub struct StateChangedFilter { + pub new_state: u8, } #[derive( Clone, @@ -15225,14 +17640,14 @@ pub mod staking { Eq, Hash )] - #[ethevent( - name = "DiamondCut", - abi = "DiamondCut((address,uint8,bytes4[])[],address,bytes)" - )] - pub struct DiamondCutFilter { - pub diamond_cut: ::std::vec::Vec, - pub init: ::ethers::core::types::Address, - pub calldata: ::ethers::core::types::Bytes, + #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] + pub struct TransferFilter { + #[ethevent(indexed)] + pub from: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub to: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub token_id: ::ethers::core::types::U256, } #[derive( Clone, @@ -15246,10 +17661,9 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "EpochEndTimeSet", abi = "EpochEndTimeSet(uint256,uint256)")] - pub struct EpochEndTimeSetFilter { - pub realm_id: ::ethers::core::types::U256, - pub new_epoch_end_time: ::ethers::core::types::U256, + #[ethevent(name = "TrustedForwarderSet", abi = "TrustedForwarderSet(address)")] + pub struct TrustedForwarderSetFilter { + pub new_trusted_forwarder: ::ethers::core::types::Address, } #[derive( Clone, @@ -15263,10 +17677,10 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "EpochLengthSet", abi = "EpochLengthSet(uint256,uint256)")] - pub struct EpochLengthSetFilter { - pub realm_id: ::ethers::core::types::U256, - pub new_epoch_length: ::ethers::core::types::U256, + #[ethevent(name = "ValidatorBanned", abi = "ValidatorBanned(address)")] + pub struct ValidatorBannedFilter { + #[ethevent(indexed)] + pub staker: ::ethers::core::types::Address, } #[derive( Clone, @@ -15280,10 +17694,15 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "EpochTimeoutSet", abi = "EpochTimeoutSet(uint256,uint256)")] - pub struct EpochTimeoutSetFilter { - pub realm_id: ::ethers::core::types::U256, - pub new_epoch_timeout: ::ethers::core::types::U256, + #[ethevent( + name = "ValidatorCommissionClaimed", + abi = "ValidatorCommissionClaimed(address,uint256,uint256,uint256)" + )] + pub struct ValidatorCommissionClaimedFilter { + pub staker_address: ::ethers::core::types::Address, + pub rewards: ::ethers::core::types::U256, + pub from_epoch: ::ethers::core::types::U256, + pub to_epoch: ::ethers::core::types::U256, } #[derive( Clone, @@ -15298,14 +17717,12 @@ pub mod staking { Hash )] #[ethevent( - name = "FixedCostRewardsClaimed", - abi = "FixedCostRewardsClaimed(address,uint256,uint256,uint256)" + name = "ValidatorKickedFromNextEpoch", + abi = "ValidatorKickedFromNextEpoch(address)" )] - pub struct FixedCostRewardsClaimedFilter { - pub staker_address: ::ethers::core::types::Address, - pub rewards: ::ethers::core::types::U256, - pub from_epoch: ::ethers::core::types::U256, - pub to_epoch: ::ethers::core::types::U256, + pub struct ValidatorKickedFromNextEpochFilter { + #[ethevent(indexed)] + pub staker: ::ethers::core::types::Address, } #[derive( Clone, @@ -15319,11 +17736,10 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "KeySetConfigSet", abi = "KeySetConfigSet(bool,string,bytes32)")] - pub struct KeySetConfigSetFilter { - pub exists: bool, - pub identifier: ::std::string::String, - pub hashed: [u8; 32], + #[ethevent(name = "ValidatorRegistered", abi = "ValidatorRegistered(address)")] + pub struct ValidatorRegisteredFilter { + #[ethevent(indexed)] + pub staker_address: ::ethers::core::types::Address, } #[derive( Clone, @@ -15337,9 +17753,12 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "KeySetConfigUpdated", abi = "KeySetConfigUpdated(string)")] - pub struct KeySetConfigUpdatedFilter { - pub identifier: ::std::string::String, + #[ethevent( + name = "ValidatorRejoinedNextEpoch", + abi = "ValidatorRejoinedNextEpoch(address)" + )] + pub struct ValidatorRejoinedNextEpochFilter { + pub staker: ::ethers::core::types::Address, } #[derive( Clone, @@ -15354,12 +17773,13 @@ pub mod staking { Hash )] #[ethevent( - name = "KickPenaltyPercentSet", - abi = "KickPenaltyPercentSet(uint256,uint256)" + name = "VersionRequirementsUpdated", + abi = "VersionRequirementsUpdated(uint256,uint256,(uint256,uint256,uint256))" )] - pub struct KickPenaltyPercentSetFilter { - pub reason: ::ethers::core::types::U256, - pub new_kick_penalty_percent: ::ethers::core::types::U256, + pub struct VersionRequirementsUpdatedFilter { + pub index: ::ethers::core::types::U256, + pub realm_id: ::ethers::core::types::U256, + pub version: Version, } #[derive( Clone, @@ -15374,14 +17794,11 @@ pub mod staking { Hash )] #[ethevent( - name = "OwnershipTransferred", - abi = "OwnershipTransferred(address,address)" + name = "VoteToAdvanceTimeOutElapsed", + abi = "VoteToAdvanceTimeOutElapsed(uint256)" )] - pub struct OwnershipTransferredFilter { - #[ethevent(indexed)] - pub previous_owner: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub new_owner: ::ethers::core::types::Address, + pub struct VoteToAdvanceTimeOutElapsedFilter { + pub realm_id: ::ethers::core::types::U256, } #[derive( Clone, @@ -15395,11 +17812,18 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "ReadyForNextEpoch", abi = "ReadyForNextEpoch(address,uint256)")] - pub struct ReadyForNextEpochFilter { + #[ethevent( + name = "VotedToKickValidatorInNextEpoch", + abi = "VotedToKickValidatorInNextEpoch(address,address,uint256,bytes)" + )] + pub struct VotedToKickValidatorInNextEpochFilter { #[ethevent(indexed)] - pub staker: ::ethers::core::types::Address, - pub epoch_number: ::ethers::core::types::U256, + pub reporter: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub validator_to_kick_staker_address: ::ethers::core::types::Address, + #[ethevent(indexed)] + pub reason: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, } #[derive( Clone, @@ -15413,9 +17837,10 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "Recovered", abi = "Recovered(address,uint256)")] - pub struct RecoveredFilter { - pub token: ::ethers::core::types::Address, + #[ethevent(name = "Withdrawn", abi = "Withdrawn(address,uint256)")] + pub struct WithdrawnFilter { + #[ethevent(indexed)] + pub staker: ::ethers::core::types::Address, pub amount: ::ethers::core::types::U256, } #[derive( @@ -15430,11 +17855,8 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "RequestToJoin", abi = "RequestToJoin(address)")] - pub struct RequestToJoinFilter { - #[ethevent(indexed)] - pub staker: ::ethers::core::types::Address, - } + #[ethevent(name = "log", abi = "log(string)")] + pub struct LogFilter(pub ::std::string::String); #[derive( Clone, ::ethers::contract::EthEvent, @@ -15447,11 +17869,8 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "RequestToLeave", abi = "RequestToLeave(address)")] - pub struct RequestToLeaveFilter { - #[ethevent(indexed)] - pub staker: ::ethers::core::types::Address, - } + #[ethevent(name = "log_address", abi = "log_address(address)")] + pub struct LogAddressFilter(pub ::ethers::core::types::Address); #[derive( Clone, ::ethers::contract::EthEvent, @@ -15464,12 +17883,9 @@ pub mod staking { Eq, Hash )] - #[ethevent( - name = "ResolverContractAddressSet", - abi = "ResolverContractAddressSet(address)" - )] - pub struct ResolverContractAddressSetFilter { - pub new_resolver_contract_address: ::ethers::core::types::Address, + #[ethevent(name = "log_array", abi = "log_array(uint256[])")] + pub struct LogArray1Filter { + pub val: ::std::vec::Vec<::ethers::core::types::U256>, } #[derive( Clone, @@ -15483,9 +17899,9 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "RewardsDurationUpdated", abi = "RewardsDurationUpdated(uint256)")] - pub struct RewardsDurationUpdatedFilter { - pub new_duration: ::ethers::core::types::U256, + #[ethevent(name = "log_array", abi = "log_array(int256[])")] + pub struct LogArray2Filter { + pub val: ::std::vec::Vec<::ethers::core::types::I256>, } #[derive( Clone, @@ -15499,15 +17915,9 @@ pub mod staking { Eq, Hash )] - #[ethevent( - name = "StakeRecordCreated", - abi = "StakeRecordCreated(address,uint256,uint256,address)" - )] - pub struct StakeRecordCreatedFilter { - pub staker_address: ::ethers::core::types::Address, - pub record_id: ::ethers::core::types::U256, - pub amount: ::ethers::core::types::U256, - pub staker_address_client: ::ethers::core::types::Address, + #[ethevent(name = "log_array", abi = "log_array(address[])")] + pub struct LogArray3Filter { + pub val: ::std::vec::Vec<::ethers::core::types::Address>, } #[derive( Clone, @@ -15521,11 +17931,8 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "StakeRecordRemoved", abi = "StakeRecordRemoved(address,uint256)")] - pub struct StakeRecordRemovedFilter { - pub user_staker_address: ::ethers::core::types::Address, - pub record_id: ::ethers::core::types::U256, - } + #[ethevent(name = "log_bytes", abi = "log_bytes(bytes)")] + pub struct LogBytesFilter(pub ::ethers::core::types::Bytes); #[derive( Clone, ::ethers::contract::EthEvent, @@ -15538,11 +17945,8 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "StakeRecordUpdated", abi = "StakeRecordUpdated(address,uint256)")] - pub struct StakeRecordUpdatedFilter { - pub staker_address: ::ethers::core::types::Address, - pub record_id: ::ethers::core::types::U256, - } + #[ethevent(name = "log_bytes32", abi = "log_bytes32(bytes32)")] + pub struct LogBytes32Filter(pub [u8; 32]); #[derive( Clone, ::ethers::contract::EthEvent, @@ -15555,17 +17959,8 @@ pub mod staking { Eq, Hash )] - #[ethevent( - name = "StakeRewardsClaimed", - abi = "StakeRewardsClaimed(address,uint256,uint256,uint256,uint256)" - )] - pub struct StakeRewardsClaimedFilter { - pub staker_address: ::ethers::core::types::Address, - pub record_id: ::ethers::core::types::U256, - pub rewards: ::ethers::core::types::U256, - pub from_epoch: ::ethers::core::types::U256, - pub to_epoch: ::ethers::core::types::U256, - } + #[ethevent(name = "log_int", abi = "log_int(int256)")] + pub struct LogIntFilter(pub ::ethers::core::types::I256); #[derive( Clone, ::ethers::contract::EthEvent, @@ -15578,11 +17973,10 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "Staked", abi = "Staked(address,uint256)")] - pub struct StakedFilter { - #[ethevent(indexed)] - pub staker: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, + #[ethevent(name = "log_named_address", abi = "log_named_address(string,address)")] + pub struct LogNamedAddressFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::Address, } #[derive( Clone, @@ -15596,9 +17990,10 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "StakingTokenSet", abi = "StakingTokenSet(address)")] - pub struct StakingTokenSetFilter { - pub new_staking_token_address: ::ethers::core::types::Address, + #[ethevent(name = "log_named_array", abi = "log_named_array(string,uint256[])")] + pub struct LogNamedArray1Filter { + pub key: ::std::string::String, + pub val: ::std::vec::Vec<::ethers::core::types::U256>, } #[derive( Clone, @@ -15612,9 +18007,10 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "StateChanged", abi = "StateChanged(uint8)")] - pub struct StateChangedFilter { - pub new_state: u8, + #[ethevent(name = "log_named_array", abi = "log_named_array(string,int256[])")] + pub struct LogNamedArray2Filter { + pub key: ::std::string::String, + pub val: ::std::vec::Vec<::ethers::core::types::I256>, } #[derive( Clone, @@ -15628,14 +18024,10 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "Transfer", abi = "Transfer(address,address,uint256)")] - pub struct TransferFilter { - #[ethevent(indexed)] - pub from: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub to: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub token_id: ::ethers::core::types::U256, + #[ethevent(name = "log_named_array", abi = "log_named_array(string,address[])")] + pub struct LogNamedArray3Filter { + pub key: ::std::string::String, + pub val: ::std::vec::Vec<::ethers::core::types::Address>, } #[derive( Clone, @@ -15649,9 +18041,10 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "TrustedForwarderSet", abi = "TrustedForwarderSet(address)")] - pub struct TrustedForwarderSetFilter { - pub new_trusted_forwarder: ::ethers::core::types::Address, + #[ethevent(name = "log_named_bytes", abi = "log_named_bytes(string,bytes)")] + pub struct LogNamedBytesFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::Bytes, } #[derive( Clone, @@ -15665,10 +18058,10 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "ValidatorBanned", abi = "ValidatorBanned(address)")] - pub struct ValidatorBannedFilter { - #[ethevent(indexed)] - pub staker: ::ethers::core::types::Address, + #[ethevent(name = "log_named_bytes32", abi = "log_named_bytes32(string,bytes32)")] + pub struct LogNamedBytes32Filter { + pub key: ::std::string::String, + pub val: [u8; 32], } #[derive( Clone, @@ -15683,14 +18076,13 @@ pub mod staking { Hash )] #[ethevent( - name = "ValidatorCommissionClaimed", - abi = "ValidatorCommissionClaimed(address,uint256,uint256,uint256)" + name = "log_named_decimal_int", + abi = "log_named_decimal_int(string,int256,uint256)" )] - pub struct ValidatorCommissionClaimedFilter { - pub staker_address: ::ethers::core::types::Address, - pub rewards: ::ethers::core::types::U256, - pub from_epoch: ::ethers::core::types::U256, - pub to_epoch: ::ethers::core::types::U256, + pub struct LogNamedDecimalIntFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::I256, + pub decimals: ::ethers::core::types::U256, } #[derive( Clone, @@ -15705,12 +18097,13 @@ pub mod staking { Hash )] #[ethevent( - name = "ValidatorKickedFromNextEpoch", - abi = "ValidatorKickedFromNextEpoch(address)" + name = "log_named_decimal_uint", + abi = "log_named_decimal_uint(string,uint256,uint256)" )] - pub struct ValidatorKickedFromNextEpochFilter { - #[ethevent(indexed)] - pub staker: ::ethers::core::types::Address, + pub struct LogNamedDecimalUintFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::U256, + pub decimals: ::ethers::core::types::U256, } #[derive( Clone, @@ -15724,10 +18117,10 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "ValidatorRegistered", abi = "ValidatorRegistered(address)")] - pub struct ValidatorRegisteredFilter { - #[ethevent(indexed)] - pub staker_address: ::ethers::core::types::Address, + #[ethevent(name = "log_named_int", abi = "log_named_int(string,int256)")] + pub struct LogNamedIntFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::I256, } #[derive( Clone, @@ -15741,12 +18134,10 @@ pub mod staking { Eq, Hash )] - #[ethevent( - name = "ValidatorRejoinedNextEpoch", - abi = "ValidatorRejoinedNextEpoch(address)" - )] - pub struct ValidatorRejoinedNextEpochFilter { - pub staker: ::ethers::core::types::Address, + #[ethevent(name = "log_named_string", abi = "log_named_string(string,string)")] + pub struct LogNamedStringFilter { + pub key: ::std::string::String, + pub val: ::std::string::String, } #[derive( Clone, @@ -15760,14 +18151,10 @@ pub mod staking { Eq, Hash )] - #[ethevent( - name = "VersionRequirementsUpdated", - abi = "VersionRequirementsUpdated(uint256,uint256,(uint256,uint256,uint256))" - )] - pub struct VersionRequirementsUpdatedFilter { - pub index: ::ethers::core::types::U256, - pub realm_id: ::ethers::core::types::U256, - pub version: Version, + #[ethevent(name = "log_named_uint", abi = "log_named_uint(string,uint256)")] + pub struct LogNamedUintFilter { + pub key: ::std::string::String, + pub val: ::ethers::core::types::U256, } #[derive( Clone, @@ -15781,13 +18168,8 @@ pub mod staking { Eq, Hash )] - #[ethevent( - name = "VoteToAdvanceTimeOutElapsed", - abi = "VoteToAdvanceTimeOutElapsed(uint256)" - )] - pub struct VoteToAdvanceTimeOutElapsedFilter { - pub realm_id: ::ethers::core::types::U256, - } + #[ethevent(name = "log_string", abi = "log_string(string)")] + pub struct LogStringFilter(pub ::std::string::String); #[derive( Clone, ::ethers::contract::EthEvent, @@ -15800,19 +18182,8 @@ pub mod staking { Eq, Hash )] - #[ethevent( - name = "VotedToKickValidatorInNextEpoch", - abi = "VotedToKickValidatorInNextEpoch(address,address,uint256,bytes)" - )] - pub struct VotedToKickValidatorInNextEpochFilter { - #[ethevent(indexed)] - pub reporter: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub validator_to_kick_staker_address: ::ethers::core::types::Address, - #[ethevent(indexed)] - pub reason: ::ethers::core::types::U256, - pub data: ::ethers::core::types::Bytes, - } + #[ethevent(name = "log_uint", abi = "log_uint(uint256)")] + pub struct LogUintFilter(pub ::ethers::core::types::U256); #[derive( Clone, ::ethers::contract::EthEvent, @@ -15825,12 +18196,8 @@ pub mod staking { Eq, Hash )] - #[ethevent(name = "Withdrawn", abi = "Withdrawn(address,uint256)")] - pub struct WithdrawnFilter { - #[ethevent(indexed)] - pub staker: ::ethers::core::types::Address, - pub amount: ::ethers::core::types::U256, - } + #[ethevent(name = "logs", abi = "logs(bytes)")] + pub struct LogsFilter(pub ::ethers::core::types::Bytes); ///Container type for all of the contract's events #[derive( Clone, @@ -15864,14 +18231,16 @@ pub mod staking { OwnershipTransferredFilter(OwnershipTransferredFilter), ReadyForNextEpochFilter(ReadyForNextEpochFilter), RecoveredFilter(RecoveredFilter), - RequestToJoinFilter(RequestToJoinFilter), + RequestToJoin1Filter(RequestToJoin1Filter), + RequestToJoin2Filter(RequestToJoin2Filter), RequestToLeaveFilter(RequestToLeaveFilter), ResolverContractAddressSetFilter(ResolverContractAddressSetFilter), RewardsDurationUpdatedFilter(RewardsDurationUpdatedFilter), StakeRecordCreatedFilter(StakeRecordCreatedFilter), StakeRecordRemovedFilter(StakeRecordRemovedFilter), StakeRecordUpdatedFilter(StakeRecordUpdatedFilter), - StakeRewardsClaimedFilter(StakeRewardsClaimedFilter), + StakeRewardsClaimed1Filter(StakeRewardsClaimed1Filter), + StakeRewardsClaimed2Filter(StakeRewardsClaimed2Filter), StakedFilter(StakedFilter), StakingTokenSetFilter(StakingTokenSetFilter), StateChangedFilter(StateChangedFilter), @@ -15886,6 +18255,28 @@ pub mod staking { VoteToAdvanceTimeOutElapsedFilter(VoteToAdvanceTimeOutElapsedFilter), VotedToKickValidatorInNextEpochFilter(VotedToKickValidatorInNextEpochFilter), WithdrawnFilter(WithdrawnFilter), + LogFilter(LogFilter), + LogAddressFilter(LogAddressFilter), + LogArray1Filter(LogArray1Filter), + LogArray2Filter(LogArray2Filter), + LogArray3Filter(LogArray3Filter), + LogBytesFilter(LogBytesFilter), + LogBytes32Filter(LogBytes32Filter), + LogIntFilter(LogIntFilter), + LogNamedAddressFilter(LogNamedAddressFilter), + LogNamedArray1Filter(LogNamedArray1Filter), + LogNamedArray2Filter(LogNamedArray2Filter), + LogNamedArray3Filter(LogNamedArray3Filter), + LogNamedBytesFilter(LogNamedBytesFilter), + LogNamedBytes32Filter(LogNamedBytes32Filter), + LogNamedDecimalIntFilter(LogNamedDecimalIntFilter), + LogNamedDecimalUintFilter(LogNamedDecimalUintFilter), + LogNamedIntFilter(LogNamedIntFilter), + LogNamedStringFilter(LogNamedStringFilter), + LogNamedUintFilter(LogNamedUintFilter), + LogStringFilter(LogStringFilter), + LogUintFilter(LogUintFilter), + LogsFilter(LogsFilter), } impl ::ethers::contract::EthLogDecode for StakingEvents { fn decode_log( @@ -15954,8 +18345,11 @@ pub mod staking { if let Ok(decoded) = RecoveredFilter::decode_log(log) { return Ok(StakingEvents::RecoveredFilter(decoded)); } - if let Ok(decoded) = RequestToJoinFilter::decode_log(log) { - return Ok(StakingEvents::RequestToJoinFilter(decoded)); + if let Ok(decoded) = RequestToJoin1Filter::decode_log(log) { + return Ok(StakingEvents::RequestToJoin1Filter(decoded)); + } + if let Ok(decoded) = RequestToJoin2Filter::decode_log(log) { + return Ok(StakingEvents::RequestToJoin2Filter(decoded)); } if let Ok(decoded) = RequestToLeaveFilter::decode_log(log) { return Ok(StakingEvents::RequestToLeaveFilter(decoded)); @@ -15975,8 +18369,11 @@ pub mod staking { if let Ok(decoded) = StakeRecordUpdatedFilter::decode_log(log) { return Ok(StakingEvents::StakeRecordUpdatedFilter(decoded)); } - if let Ok(decoded) = StakeRewardsClaimedFilter::decode_log(log) { - return Ok(StakingEvents::StakeRewardsClaimedFilter(decoded)); + if let Ok(decoded) = StakeRewardsClaimed1Filter::decode_log(log) { + return Ok(StakingEvents::StakeRewardsClaimed1Filter(decoded)); + } + if let Ok(decoded) = StakeRewardsClaimed2Filter::decode_log(log) { + return Ok(StakingEvents::StakeRewardsClaimed2Filter(decoded)); } if let Ok(decoded) = StakedFilter::decode_log(log) { return Ok(StakingEvents::StakedFilter(decoded)); @@ -16020,6 +18417,72 @@ pub mod staking { if let Ok(decoded) = WithdrawnFilter::decode_log(log) { return Ok(StakingEvents::WithdrawnFilter(decoded)); } + if let Ok(decoded) = LogFilter::decode_log(log) { + return Ok(StakingEvents::LogFilter(decoded)); + } + if let Ok(decoded) = LogAddressFilter::decode_log(log) { + return Ok(StakingEvents::LogAddressFilter(decoded)); + } + if let Ok(decoded) = LogArray1Filter::decode_log(log) { + return Ok(StakingEvents::LogArray1Filter(decoded)); + } + if let Ok(decoded) = LogArray2Filter::decode_log(log) { + return Ok(StakingEvents::LogArray2Filter(decoded)); + } + if let Ok(decoded) = LogArray3Filter::decode_log(log) { + return Ok(StakingEvents::LogArray3Filter(decoded)); + } + if let Ok(decoded) = LogBytesFilter::decode_log(log) { + return Ok(StakingEvents::LogBytesFilter(decoded)); + } + if let Ok(decoded) = LogBytes32Filter::decode_log(log) { + return Ok(StakingEvents::LogBytes32Filter(decoded)); + } + if let Ok(decoded) = LogIntFilter::decode_log(log) { + return Ok(StakingEvents::LogIntFilter(decoded)); + } + if let Ok(decoded) = LogNamedAddressFilter::decode_log(log) { + return Ok(StakingEvents::LogNamedAddressFilter(decoded)); + } + if let Ok(decoded) = LogNamedArray1Filter::decode_log(log) { + return Ok(StakingEvents::LogNamedArray1Filter(decoded)); + } + if let Ok(decoded) = LogNamedArray2Filter::decode_log(log) { + return Ok(StakingEvents::LogNamedArray2Filter(decoded)); + } + if let Ok(decoded) = LogNamedArray3Filter::decode_log(log) { + return Ok(StakingEvents::LogNamedArray3Filter(decoded)); + } + if let Ok(decoded) = LogNamedBytesFilter::decode_log(log) { + return Ok(StakingEvents::LogNamedBytesFilter(decoded)); + } + if let Ok(decoded) = LogNamedBytes32Filter::decode_log(log) { + return Ok(StakingEvents::LogNamedBytes32Filter(decoded)); + } + if let Ok(decoded) = LogNamedDecimalIntFilter::decode_log(log) { + return Ok(StakingEvents::LogNamedDecimalIntFilter(decoded)); + } + if let Ok(decoded) = LogNamedDecimalUintFilter::decode_log(log) { + return Ok(StakingEvents::LogNamedDecimalUintFilter(decoded)); + } + if let Ok(decoded) = LogNamedIntFilter::decode_log(log) { + return Ok(StakingEvents::LogNamedIntFilter(decoded)); + } + if let Ok(decoded) = LogNamedStringFilter::decode_log(log) { + return Ok(StakingEvents::LogNamedStringFilter(decoded)); + } + if let Ok(decoded) = LogNamedUintFilter::decode_log(log) { + return Ok(StakingEvents::LogNamedUintFilter(decoded)); + } + if let Ok(decoded) = LogStringFilter::decode_log(log) { + return Ok(StakingEvents::LogStringFilter(decoded)); + } + if let Ok(decoded) = LogUintFilter::decode_log(log) { + return Ok(StakingEvents::LogUintFilter(decoded)); + } + if let Ok(decoded) = LogsFilter::decode_log(log) { + return Ok(StakingEvents::LogsFilter(decoded)); + } Err(::ethers::core::abi::Error::InvalidData) } } @@ -16079,7 +18542,10 @@ pub mod staking { ::core::fmt::Display::fmt(element, f) } Self::RecoveredFilter(element) => ::core::fmt::Display::fmt(element, f), - Self::RequestToJoinFilter(element) => { + Self::RequestToJoin1Filter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::RequestToJoin2Filter(element) => { ::core::fmt::Display::fmt(element, f) } Self::RequestToLeaveFilter(element) => { @@ -16100,7 +18566,10 @@ pub mod staking { Self::StakeRecordUpdatedFilter(element) => { ::core::fmt::Display::fmt(element, f) } - Self::StakeRewardsClaimedFilter(element) => { + Self::StakeRewardsClaimed1Filter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::StakeRewardsClaimed2Filter(element) => { ::core::fmt::Display::fmt(element, f) } Self::StakedFilter(element) => ::core::fmt::Display::fmt(element, f), @@ -16139,6 +18608,48 @@ pub mod staking { ::core::fmt::Display::fmt(element, f) } Self::WithdrawnFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogAddressFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogArray1Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogArray2Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogArray3Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogBytesFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogBytes32Filter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogIntFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedAddressFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::LogNamedArray1Filter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::LogNamedArray2Filter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::LogNamedArray3Filter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::LogNamedBytesFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::LogNamedBytes32Filter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::LogNamedDecimalIntFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::LogNamedDecimalUintFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::LogNamedIntFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogNamedStringFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::LogNamedUintFilter(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::LogStringFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogUintFilter(element) => ::core::fmt::Display::fmt(element, f), + Self::LogsFilter(element) => ::core::fmt::Display::fmt(element, f), } } } @@ -16182,182 +18693,749 @@ pub mod staking { Self::CountOfflinePhaseDataFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: DebugEventFilter) -> Self { - Self::DebugEventFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: DebugEventFilter) -> Self { + Self::DebugEventFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: DevopsAdminSetFilter) -> Self { + Self::DevopsAdminSetFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: DiamondCutFilter) -> Self { + Self::DiamondCutFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: EpochEndTimeSetFilter) -> Self { + Self::EpochEndTimeSetFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: EpochLengthSetFilter) -> Self { + Self::EpochLengthSetFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: EpochTimeoutSetFilter) -> Self { + Self::EpochTimeoutSetFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: FixedCostRewardsClaimedFilter) -> Self { + Self::FixedCostRewardsClaimedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: KeySetConfigSetFilter) -> Self { + Self::KeySetConfigSetFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: KeySetConfigUpdatedFilter) -> Self { + Self::KeySetConfigUpdatedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: KickPenaltyPercentSetFilter) -> Self { + Self::KickPenaltyPercentSetFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: OwnershipTransferredFilter) -> Self { + Self::OwnershipTransferredFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: ReadyForNextEpochFilter) -> Self { + Self::ReadyForNextEpochFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: RecoveredFilter) -> Self { + Self::RecoveredFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: RequestToJoin1Filter) -> Self { + Self::RequestToJoin1Filter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: RequestToJoin2Filter) -> Self { + Self::RequestToJoin2Filter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: RequestToLeaveFilter) -> Self { + Self::RequestToLeaveFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: ResolverContractAddressSetFilter) -> Self { + Self::ResolverContractAddressSetFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: RewardsDurationUpdatedFilter) -> Self { + Self::RewardsDurationUpdatedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: StakeRecordCreatedFilter) -> Self { + Self::StakeRecordCreatedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: StakeRecordRemovedFilter) -> Self { + Self::StakeRecordRemovedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: StakeRecordUpdatedFilter) -> Self { + Self::StakeRecordUpdatedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: StakeRewardsClaimed1Filter) -> Self { + Self::StakeRewardsClaimed1Filter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: StakeRewardsClaimed2Filter) -> Self { + Self::StakeRewardsClaimed2Filter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: StakedFilter) -> Self { + Self::StakedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: StakingTokenSetFilter) -> Self { + Self::StakingTokenSetFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: StateChangedFilter) -> Self { + Self::StateChangedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: TransferFilter) -> Self { + Self::TransferFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: TrustedForwarderSetFilter) -> Self { + Self::TrustedForwarderSetFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: ValidatorBannedFilter) -> Self { + Self::ValidatorBannedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: ValidatorCommissionClaimedFilter) -> Self { + Self::ValidatorCommissionClaimedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: ValidatorKickedFromNextEpochFilter) -> Self { + Self::ValidatorKickedFromNextEpochFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: ValidatorRegisteredFilter) -> Self { + Self::ValidatorRegisteredFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: ValidatorRejoinedNextEpochFilter) -> Self { + Self::ValidatorRejoinedNextEpochFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: VersionRequirementsUpdatedFilter) -> Self { + Self::VersionRequirementsUpdatedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: VoteToAdvanceTimeOutElapsedFilter) -> Self { + Self::VoteToAdvanceTimeOutElapsedFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: VotedToKickValidatorInNextEpochFilter) -> Self { + Self::VotedToKickValidatorInNextEpochFilter(value) + } + } + impl ::core::convert::From for StakingEvents { + fn from(value: WithdrawnFilter) -> Self { + Self::WithdrawnFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: DevopsAdminSetFilter) -> Self { - Self::DevopsAdminSetFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogFilter) -> Self { + Self::LogFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: DiamondCutFilter) -> Self { - Self::DiamondCutFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogAddressFilter) -> Self { + Self::LogAddressFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: EpochEndTimeSetFilter) -> Self { - Self::EpochEndTimeSetFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogArray1Filter) -> Self { + Self::LogArray1Filter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: EpochLengthSetFilter) -> Self { - Self::EpochLengthSetFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogArray2Filter) -> Self { + Self::LogArray2Filter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: EpochTimeoutSetFilter) -> Self { - Self::EpochTimeoutSetFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogArray3Filter) -> Self { + Self::LogArray3Filter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: FixedCostRewardsClaimedFilter) -> Self { - Self::FixedCostRewardsClaimedFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogBytesFilter) -> Self { + Self::LogBytesFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: KeySetConfigSetFilter) -> Self { - Self::KeySetConfigSetFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogBytes32Filter) -> Self { + Self::LogBytes32Filter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: KeySetConfigUpdatedFilter) -> Self { - Self::KeySetConfigUpdatedFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogIntFilter) -> Self { + Self::LogIntFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: KickPenaltyPercentSetFilter) -> Self { - Self::KickPenaltyPercentSetFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogNamedAddressFilter) -> Self { + Self::LogNamedAddressFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: OwnershipTransferredFilter) -> Self { - Self::OwnershipTransferredFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogNamedArray1Filter) -> Self { + Self::LogNamedArray1Filter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: ReadyForNextEpochFilter) -> Self { - Self::ReadyForNextEpochFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogNamedArray2Filter) -> Self { + Self::LogNamedArray2Filter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: RecoveredFilter) -> Self { - Self::RecoveredFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogNamedArray3Filter) -> Self { + Self::LogNamedArray3Filter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: RequestToJoinFilter) -> Self { - Self::RequestToJoinFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogNamedBytesFilter) -> Self { + Self::LogNamedBytesFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: RequestToLeaveFilter) -> Self { - Self::RequestToLeaveFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogNamedBytes32Filter) -> Self { + Self::LogNamedBytes32Filter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: ResolverContractAddressSetFilter) -> Self { - Self::ResolverContractAddressSetFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogNamedDecimalIntFilter) -> Self { + Self::LogNamedDecimalIntFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: RewardsDurationUpdatedFilter) -> Self { - Self::RewardsDurationUpdatedFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogNamedDecimalUintFilter) -> Self { + Self::LogNamedDecimalUintFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: StakeRecordCreatedFilter) -> Self { - Self::StakeRecordCreatedFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogNamedIntFilter) -> Self { + Self::LogNamedIntFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: StakeRecordRemovedFilter) -> Self { - Self::StakeRecordRemovedFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogNamedStringFilter) -> Self { + Self::LogNamedStringFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: StakeRecordUpdatedFilter) -> Self { - Self::StakeRecordUpdatedFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogNamedUintFilter) -> Self { + Self::LogNamedUintFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: StakeRewardsClaimedFilter) -> Self { - Self::StakeRewardsClaimedFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogStringFilter) -> Self { + Self::LogStringFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: StakedFilter) -> Self { - Self::StakedFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogUintFilter) -> Self { + Self::LogUintFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: StakingTokenSetFilter) -> Self { - Self::StakingTokenSetFilter(value) + impl ::core::convert::From for StakingEvents { + fn from(value: LogsFilter) -> Self { + Self::LogsFilter(value) } } - impl ::core::convert::From for StakingEvents { - fn from(value: StateChangedFilter) -> Self { - Self::StateChangedFilter(value) - } + ///Container type for all input parameters for the `IS_TEST` function with signature `IS_TEST()` and selector `0xfa7626d4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "IS_TEST", abi = "IS_TEST()")] + pub struct IsTestCall; + ///Container type for all input parameters for the `_generateAddresses` function with signature `_generateAddresses(uint256)` and selector `0x678ac78a` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "_generateAddresses", abi = "_generateAddresses(uint256)")] + pub struct GenerateAddressesCall { + pub num_addresses: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `_generateAddressesWithOffset` function with signature `_generateAddressesWithOffset(uint256,uint256)` and selector `0xa5187b2b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "_generateAddressesWithOffset", + abi = "_generateAddressesWithOffset(uint256,uint256)" + )] + pub struct GenerateAddressesWithOffsetCall { + pub num_addresses: ::ethers::core::types::U256, + pub offset: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `_generatePubKeys` function with signature `_generatePubKeys(uint256)` and selector `0xfed0a77b` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "_generatePubKeys", abi = "_generatePubKeys(uint256)")] + pub struct GeneratePubKeysCall { + pub stakers: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `_generateUint256s` function with signature `_generateUint256s(uint256)` and selector `0xae517f4d` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "_generateUint256s", abi = "_generateUint256s(uint256)")] + pub struct GenerateUint256SCall { + pub num_uint_25_6s: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `_generateUint256sWithOffset` function with signature `_generateUint256sWithOffset(uint256,uint256)` and selector `0xfb9d55b8` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "_generateUint256sWithOffset", + abi = "_generateUint256sWithOffset(uint256,uint256)" + )] + pub struct GenerateUint256SWithOffsetCall { + pub num_uint_25_6s: ::ethers::core::types::U256, + pub offset: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `_generateValidators` function with signature `_generateValidators(uint256)` and selector `0xc5344d40` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "_generateValidators", abi = "_generateValidators(uint256)")] + pub struct GenerateValidatorsCall { + pub num_validators: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `addRealm` function with signature `addRealm()` and selector `0x472a7d89` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "addRealm", abi = "addRealm()")] + pub struct AddRealmCall; + ///Container type for all input parameters for the `adminKickValidatorInNextEpoch` function with signature `adminKickValidatorInNextEpoch(address)` and selector `0x7aa086e7` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "adminKickValidatorInNextEpoch", + abi = "adminKickValidatorInNextEpoch(address)" + )] + pub struct AdminKickValidatorInNextEpochCall { + pub validator_staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `adminRejoinValidator` function with signature `adminRejoinValidator(uint256,address)` and selector `0x4cd938ce` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "adminRejoinValidator", + abi = "adminRejoinValidator(uint256,address)" + )] + pub struct AdminRejoinValidatorCall { + pub realm_id: ::ethers::core::types::U256, + pub staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `adminSetValidatorRegisterAttestedWalletDisabled` function with signature `adminSetValidatorRegisterAttestedWalletDisabled(address,bool)` and selector `0x15319384` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "adminSetValidatorRegisterAttestedWalletDisabled", + abi = "adminSetValidatorRegisterAttestedWalletDisabled(address,bool)" + )] + pub struct AdminSetValidatorRegisterAttestedWalletDisabledCall { + pub validator_address: ::ethers::core::types::Address, + pub disabled: bool, + } + ///Container type for all input parameters for the `adminSetValidatorsInCurrentEpoch` function with signature `adminSetValidatorsInCurrentEpoch(uint256,address[])` and selector `0x7db39fb4` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "adminSetValidatorsInCurrentEpoch", + abi = "adminSetValidatorsInCurrentEpoch(uint256,address[])" + )] + pub struct AdminSetValidatorsInCurrentEpochCall { + pub realm_id: ::ethers::core::types::U256, + pub validators_for_current_epoch: ::std::vec::Vec< + ::ethers::core::types::Address, + >, } - impl ::core::convert::From for StakingEvents { - fn from(value: TransferFilter) -> Self { - Self::TransferFilter(value) - } + ///Container type for all input parameters for the `adminSetValidatorsInNextEpoch` function with signature `adminSetValidatorsInNextEpoch(uint256,address[])` and selector `0x2d5e1361` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "adminSetValidatorsInNextEpoch", + abi = "adminSetValidatorsInNextEpoch(uint256,address[])" + )] + pub struct AdminSetValidatorsInNextEpochCall { + pub realm_id: ::ethers::core::types::U256, + pub validators_for_next_epoch: ::std::vec::Vec<::ethers::core::types::Address>, } - impl ::core::convert::From for StakingEvents { - fn from(value: TrustedForwarderSetFilter) -> Self { - Self::TrustedForwarderSetFilter(value) - } + ///Container type for all input parameters for the `adminSetupShadowSplicing` function with signature `adminSetupShadowSplicing(uint256,uint256,address[])` and selector `0x684d8bd9` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "adminSetupShadowSplicing", + abi = "adminSetupShadowSplicing(uint256,uint256,address[])" + )] + pub struct AdminSetupShadowSplicingCall { + pub source_realm_id: ::ethers::core::types::U256, + pub target_realm_id: ::ethers::core::types::U256, + pub target_validators: ::std::vec::Vec<::ethers::core::types::Address>, } - impl ::core::convert::From for StakingEvents { - fn from(value: ValidatorBannedFilter) -> Self { - Self::ValidatorBannedFilter(value) - } + ///Container type for all input parameters for the `adminSlashValidator` function with signature `adminSlashValidator(uint256,address)` and selector `0x1f1c50cb` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "adminSlashValidator", + abi = "adminSlashValidator(uint256,address)" + )] + pub struct AdminSlashValidatorCall { + pub percentage: ::ethers::core::types::U256, + pub staker_address: ::ethers::core::types::Address, } - impl ::core::convert::From for StakingEvents { - fn from(value: ValidatorCommissionClaimedFilter) -> Self { - Self::ValidatorCommissionClaimedFilter(value) - } + ///Container type for all input parameters for the `adminStakeForUser` function with signature `adminStakeForUser(address,address,uint256,uint256)` and selector `0xf5008ed2` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "adminStakeForUser", + abi = "adminStakeForUser(address,address,uint256,uint256)" + )] + pub struct AdminStakeForUserCall { + pub user_staker_address: ::ethers::core::types::Address, + pub operator_staker_address: ::ethers::core::types::Address, + pub time_lock: ::ethers::core::types::U256, + pub amount: ::ethers::core::types::U256, } - impl ::core::convert::From for StakingEvents { - fn from(value: ValidatorKickedFromNextEpochFilter) -> Self { - Self::ValidatorKickedFromNextEpochFilter(value) - } + ///Container type for all input parameters for the `adminUnfreezeForUser` function with signature `adminUnfreezeForUser(address,address,uint256)` and selector `0x06732018` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "adminUnfreezeForUser", + abi = "adminUnfreezeForUser(address,address,uint256)" + )] + pub struct AdminUnfreezeForUserCall { + pub user_staker_address: ::ethers::core::types::Address, + pub operator_staker_address: ::ethers::core::types::Address, + pub stake_id: ::ethers::core::types::U256, } - impl ::core::convert::From for StakingEvents { - fn from(value: ValidatorRegisteredFilter) -> Self { - Self::ValidatorRegisteredFilter(value) - } + ///Container type for all input parameters for the `advanceEpoch` function with signature `advanceEpoch(uint256)` and selector `0xf3b87779` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "advanceEpoch", abi = "advanceEpoch(uint256)")] + pub struct AdvanceEpochCall { + pub realm_id: ::ethers::core::types::U256, } - impl ::core::convert::From for StakingEvents { - fn from(value: ValidatorRejoinedNextEpochFilter) -> Self { - Self::ValidatorRejoinedNextEpochFilter(value) - } + ///Container type for all input parameters for the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "approve", abi = "approve(address,uint256)")] + pub struct ApproveCall { + pub approved: ::ethers::core::types::Address, + pub token_id: ::ethers::core::types::U256, } - impl ::core::convert::From for StakingEvents { - fn from(value: VersionRequirementsUpdatedFilter) -> Self { - Self::VersionRequirementsUpdatedFilter(value) - } + ///Container type for all input parameters for the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] + pub struct BalanceOfCall { + pub owner: ::ethers::core::types::Address, } - impl ::core::convert::From for StakingEvents { - fn from(value: VoteToAdvanceTimeOutElapsedFilter) -> Self { - Self::VoteToAdvanceTimeOutElapsedFilter(value) - } + ///Container type for all input parameters for the `calculateRewardsPerDay` function with signature `calculateRewardsPerDay((uint256,uint256,address[],uint256))` and selector `0x9be372e0` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "calculateRewardsPerDay", + abi = "calculateRewardsPerDay((uint256,uint256,address[],uint256))" + )] + pub struct CalculateRewardsPerDayCall { + pub global_stats: RewardEpochGlobalStats, } - impl ::core::convert::From for StakingEvents { - fn from(value: VotedToKickValidatorInNextEpochFilter) -> Self { - Self::VotedToKickValidatorInNextEpochFilter(value) - } + ///Container type for all input parameters for the `calculateStakeWeight` function with signature `calculateStakeWeight(uint256,uint256)` and selector `0x2b7c29e3` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "calculateStakeWeight", + abi = "calculateStakeWeight(uint256,uint256)" + )] + pub struct CalculateStakeWeightCall { + pub time_lock: ::ethers::core::types::U256, + pub amount: ::ethers::core::types::U256, } - impl ::core::convert::From for StakingEvents { - fn from(value: WithdrawnFilter) -> Self { - Self::WithdrawnFilter(value) - } + ///Container type for all input parameters for the `checkActiveOrUnlockedOrPausedState` function with signature `checkActiveOrUnlockedOrPausedState(uint8)` and selector `0xb6e184c0` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall( + name = "checkActiveOrUnlockedOrPausedState", + abi = "checkActiveOrUnlockedOrPausedState(uint8)" + )] + pub struct CheckActiveOrUnlockedOrPausedStateCall { + pub state: u8, } - ///Container type for all input parameters for the `addRealm` function with signature `addRealm()` and selector `0x472a7d89` + ///Container type for all input parameters for the `checkStakingAmounts` function with signature `checkStakingAmounts(address)` and selector `0x49919966` #[derive( Clone, ::ethers::contract::EthCall, @@ -16370,9 +19448,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "addRealm", abi = "addRealm()")] - pub struct AddRealmCall; - ///Container type for all input parameters for the `adminKickValidatorInNextEpoch` function with signature `adminKickValidatorInNextEpoch(address)` and selector `0x7aa086e7` + #[ethcall(name = "checkStakingAmounts", abi = "checkStakingAmounts(address)")] + pub struct CheckStakingAmountsCall { + pub staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `checkVersion` function with signature `checkVersion(uint256,(uint256,uint256,uint256))` and selector `0xcffbfc20` #[derive( Clone, ::ethers::contract::EthCall, @@ -16386,13 +19466,14 @@ pub mod staking { Hash )] #[ethcall( - name = "adminKickValidatorInNextEpoch", - abi = "adminKickValidatorInNextEpoch(address)" + name = "checkVersion", + abi = "checkVersion(uint256,(uint256,uint256,uint256))" )] - pub struct AdminKickValidatorInNextEpochCall { - pub validator_staker_address: ::ethers::core::types::Address, + pub struct CheckVersionCall { + pub realm_id: ::ethers::core::types::U256, + pub version: Version, } - ///Container type for all input parameters for the `adminRejoinValidator` function with signature `adminRejoinValidator(uint256,address)` and selector `0x4cd938ce` + ///Container type for all input parameters for the `claimFixedCostRewards` function with signature `claimFixedCostRewards(uint256,uint256)` and selector `0xcc5e546b` #[derive( Clone, ::ethers::contract::EthCall, @@ -16406,14 +19487,14 @@ pub mod staking { Hash )] #[ethcall( - name = "adminRejoinValidator", - abi = "adminRejoinValidator(uint256,address)" + name = "claimFixedCostRewards", + abi = "claimFixedCostRewards(uint256,uint256)" )] - pub struct AdminRejoinValidatorCall { + pub struct ClaimFixedCostRewardsCall { pub realm_id: ::ethers::core::types::U256, - pub staker_address: ::ethers::core::types::Address, + pub max_number_of_epochs_to_claim: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `adminSetValidatorRegisterAttestedWalletDisabled` function with signature `adminSetValidatorRegisterAttestedWalletDisabled(address,bool)` and selector `0x15319384` + ///Container type for all input parameters for the `claimStakeRewards` function with signature `claimStakeRewards(uint256,address,uint256,uint256)` and selector `0x0ffb0d94` #[derive( Clone, ::ethers::contract::EthCall, @@ -16427,14 +19508,16 @@ pub mod staking { Hash )] #[ethcall( - name = "adminSetValidatorRegisterAttestedWalletDisabled", - abi = "adminSetValidatorRegisterAttestedWalletDisabled(address,bool)" + name = "claimStakeRewards", + abi = "claimStakeRewards(uint256,address,uint256,uint256)" )] - pub struct AdminSetValidatorRegisterAttestedWalletDisabledCall { - pub validator_address: ::ethers::core::types::Address, - pub disabled: bool, + pub struct ClaimStakeRewardsCall { + pub realm_id: ::ethers::core::types::U256, + pub staker_address: ::ethers::core::types::Address, + pub stake_record_id: ::ethers::core::types::U256, + pub max_number_of_epochs_to_claim: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `adminSetValidatorsInCurrentEpoch` function with signature `adminSetValidatorsInCurrentEpoch(uint256,address[])` and selector `0x7db39fb4` + ///Container type for all input parameters for the `claimValidatorCommission` function with signature `claimValidatorCommission(uint256,uint256)` and selector `0x123eab4b` #[derive( Clone, ::ethers::contract::EthCall, @@ -16448,16 +19531,14 @@ pub mod staking { Hash )] #[ethcall( - name = "adminSetValidatorsInCurrentEpoch", - abi = "adminSetValidatorsInCurrentEpoch(uint256,address[])" + name = "claimValidatorCommission", + abi = "claimValidatorCommission(uint256,uint256)" )] - pub struct AdminSetValidatorsInCurrentEpochCall { + pub struct ClaimValidatorCommissionCall { pub realm_id: ::ethers::core::types::U256, - pub validators_for_current_epoch: ::std::vec::Vec< - ::ethers::core::types::Address, - >, + pub max_number_of_epochs_to_claim: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `adminSetValidatorsInNextEpoch` function with signature `adminSetValidatorsInNextEpoch(uint256,address[])` and selector `0x2d5e1361` + ///Container type for all input parameters for the `complaintConfig` function with signature `complaintConfig(uint256)` and selector `0x02f6da56` #[derive( Clone, ::ethers::contract::EthCall, @@ -16470,15 +19551,11 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "adminSetValidatorsInNextEpoch", - abi = "adminSetValidatorsInNextEpoch(uint256,address[])" - )] - pub struct AdminSetValidatorsInNextEpochCall { - pub realm_id: ::ethers::core::types::U256, - pub validators_for_next_epoch: ::std::vec::Vec<::ethers::core::types::Address>, + #[ethcall(name = "complaintConfig", abi = "complaintConfig(uint256)")] + pub struct ComplaintConfigCall { + pub reason: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `adminSetupShadowSplicing` function with signature `adminSetupShadowSplicing(uint256,uint256,address[])` and selector `0x684d8bd9` + ///Container type for all input parameters for the `contractResolver` function with signature `contractResolver()` and selector `0x50d17b5e` #[derive( Clone, ::ethers::contract::EthCall, @@ -16491,16 +19568,9 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "adminSetupShadowSplicing", - abi = "adminSetupShadowSplicing(uint256,uint256,address[])" - )] - pub struct AdminSetupShadowSplicingCall { - pub source_realm_id: ::ethers::core::types::U256, - pub target_realm_id: ::ethers::core::types::U256, - pub target_validators: ::std::vec::Vec<::ethers::core::types::Address>, - } - ///Container type for all input parameters for the `adminSlashValidator` function with signature `adminSlashValidator(uint256,address)` and selector `0x1f1c50cb` + #[ethcall(name = "contractResolver", abi = "contractResolver()")] + pub struct ContractResolverCall; + ///Container type for all input parameters for the `countOfCurrentValidatorsReadyForNextEpoch` function with signature `countOfCurrentValidatorsReadyForNextEpoch(uint256)` and selector `0x31232f31` #[derive( Clone, ::ethers::contract::EthCall, @@ -16514,14 +19584,13 @@ pub mod staking { Hash )] #[ethcall( - name = "adminSlashValidator", - abi = "adminSlashValidator(uint256,address)" + name = "countOfCurrentValidatorsReadyForNextEpoch", + abi = "countOfCurrentValidatorsReadyForNextEpoch(uint256)" )] - pub struct AdminSlashValidatorCall { - pub percentage: ::ethers::core::types::U256, - pub staker_address: ::ethers::core::types::Address, + pub struct CountOfCurrentValidatorsReadyForNextEpochCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `adminStakeForUser` function with signature `adminStakeForUser(address,address,uint256,uint256)` and selector `0xf5008ed2` + ///Container type for all input parameters for the `countOfNextValidatorsReadyForNextEpoch` function with signature `countOfNextValidatorsReadyForNextEpoch(uint256)` and selector `0xdce6f078` #[derive( Clone, ::ethers::contract::EthCall, @@ -16535,16 +19604,13 @@ pub mod staking { Hash )] #[ethcall( - name = "adminStakeForUser", - abi = "adminStakeForUser(address,address,uint256,uint256)" + name = "countOfNextValidatorsReadyForNextEpoch", + abi = "countOfNextValidatorsReadyForNextEpoch(uint256)" )] - pub struct AdminStakeForUserCall { - pub user_staker_address: ::ethers::core::types::Address, - pub operator_staker_address: ::ethers::core::types::Address, - pub time_lock: ::ethers::core::types::U256, - pub amount: ::ethers::core::types::U256, + pub struct CountOfNextValidatorsReadyForNextEpochCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `adminUnfreezeForUser` function with signature `adminUnfreezeForUser(address,address,uint256)` and selector `0x06732018` + ///Container type for all input parameters for the `currentValidatorCountForConsensus` function with signature `currentValidatorCountForConsensus(uint256)` and selector `0x9423f589` #[derive( Clone, ::ethers::contract::EthCall, @@ -16558,15 +19624,13 @@ pub mod staking { Hash )] #[ethcall( - name = "adminUnfreezeForUser", - abi = "adminUnfreezeForUser(address,address,uint256)" + name = "currentValidatorCountForConsensus", + abi = "currentValidatorCountForConsensus(uint256)" )] - pub struct AdminUnfreezeForUserCall { - pub user_staker_address: ::ethers::core::types::Address, - pub operator_staker_address: ::ethers::core::types::Address, - pub stake_id: ::ethers::core::types::U256, + pub struct CurrentValidatorCountForConsensusCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `advanceEpoch` function with signature `advanceEpoch(uint256)` and selector `0xf3b87779` + ///Container type for all input parameters for the `decreaseRewardPool` function with signature `decreaseRewardPool(uint256,uint256)` and selector `0xfc36f915` #[derive( Clone, ::ethers::contract::EthCall, @@ -16579,11 +19643,12 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "advanceEpoch", abi = "advanceEpoch(uint256)")] - pub struct AdvanceEpochCall { + #[ethcall(name = "decreaseRewardPool", abi = "decreaseRewardPool(uint256,uint256)")] + pub struct DecreaseRewardPoolCall { pub realm_id: ::ethers::core::types::U256, + pub amount: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `approve` function with signature `approve(address,uint256)` and selector `0x095ea7b3` + ///Container type for all input parameters for the `deleteKeySet` function with signature `deleteKeySet(string)` and selector `0x0815b188` #[derive( Clone, ::ethers::contract::EthCall, @@ -16596,12 +19661,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "approve", abi = "approve(address,uint256)")] - pub struct ApproveCall { - pub approved: ::ethers::core::types::Address, - pub token_id: ::ethers::core::types::U256, + #[ethcall(name = "deleteKeySet", abi = "deleteKeySet(string)")] + pub struct DeleteKeySetCall { + pub identifier: ::std::string::String, } - ///Container type for all input parameters for the `balanceOf` function with signature `balanceOf(address)` and selector `0x70a08231` + ///Container type for all input parameters for the `diamondCut` function with signature `diamondCut((address,uint8,bytes4[])[],address,bytes)` and selector `0x1f931c1c` #[derive( Clone, ::ethers::contract::EthCall, @@ -16614,11 +19678,16 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "balanceOf", abi = "balanceOf(address)")] - pub struct BalanceOfCall { - pub owner: ::ethers::core::types::Address, + #[ethcall( + name = "diamondCut", + abi = "diamondCut((address,uint8,bytes4[])[],address,bytes)" + )] + pub struct DiamondCutCall { + pub diamond_cut: ::std::vec::Vec, + pub init: ::ethers::core::types::Address, + pub calldata: ::ethers::core::types::Bytes, } - ///Container type for all input parameters for the `calculateRewardsPerDay` function with signature `calculateRewardsPerDay((uint256,uint256,address[],uint256))` and selector `0x9be372e0` + ///Container type for all input parameters for the `emitClearOfflinePhaseData` function with signature `emitClearOfflinePhaseData(uint256)` and selector `0x00a52713` #[derive( Clone, ::ethers::contract::EthCall, @@ -16632,13 +19701,13 @@ pub mod staking { Hash )] #[ethcall( - name = "calculateRewardsPerDay", - abi = "calculateRewardsPerDay((uint256,uint256,address[],uint256))" + name = "emitClearOfflinePhaseData", + abi = "emitClearOfflinePhaseData(uint256)" )] - pub struct CalculateRewardsPerDayCall { - pub global_stats: RewardEpochGlobalStats, + pub struct EmitClearOfflinePhaseDataCall { + pub data_type: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `calculateStakeWeight` function with signature `calculateStakeWeight(uint256,uint256)` and selector `0x2b7c29e3` + ///Container type for all input parameters for the `emitCountOfflinePhaseData` function with signature `emitCountOfflinePhaseData(uint256)` and selector `0x9a74745d` #[derive( Clone, ::ethers::contract::EthCall, @@ -16652,14 +19721,13 @@ pub mod staking { Hash )] #[ethcall( - name = "calculateStakeWeight", - abi = "calculateStakeWeight(uint256,uint256)" + name = "emitCountOfflinePhaseData", + abi = "emitCountOfflinePhaseData(uint256)" )] - pub struct CalculateStakeWeightCall { - pub time_lock: ::ethers::core::types::U256, - pub amount: ::ethers::core::types::U256, + pub struct EmitCountOfflinePhaseDataCall { + pub data_type: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `checkActiveOrUnlockedOrPausedState` function with signature `checkActiveOrUnlockedOrPausedState(uint8)` and selector `0xb6e184c0` + ///Container type for all input parameters for the `epoch` function with signature `epoch(uint256)` and selector `0x5487c577` #[derive( Clone, ::ethers::contract::EthCall, @@ -16672,14 +19740,103 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "checkActiveOrUnlockedOrPausedState", - abi = "checkActiveOrUnlockedOrPausedState(uint8)" + #[ethcall(name = "epoch", abi = "epoch(uint256)")] + pub struct EpochCall { + pub realm_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `excludeArtifacts` function with signature `excludeArtifacts()` and selector `0xb5508aa9` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "excludeArtifacts", abi = "excludeArtifacts()")] + pub struct ExcludeArtifactsCall; + ///Container type for all input parameters for the `excludeContracts` function with signature `excludeContracts()` and selector `0xe20c9f71` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "excludeContracts", abi = "excludeContracts()")] + pub struct ExcludeContractsCall; + ///Container type for all input parameters for the `excludeSelectors` function with signature `excludeSelectors()` and selector `0xb0464fdc` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "excludeSelectors", abi = "excludeSelectors()")] + pub struct ExcludeSelectorsCall; + ///Container type for all input parameters for the `excludeSenders` function with signature `excludeSenders()` and selector `0x1ed7831c` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "excludeSenders", abi = "excludeSenders()")] + pub struct ExcludeSendersCall; + ///Container type for all input parameters for the `exit` function with signature `exit()` and selector `0xe9fad8ee` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "exit", abi = "exit()")] + pub struct ExitCall; + ///Container type for all input parameters for the `facetAddress` function with signature `facetAddress(bytes4)` and selector `0xcdffacc6` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash )] - pub struct CheckActiveOrUnlockedOrPausedStateCall { - pub state: u8, + #[ethcall(name = "facetAddress", abi = "facetAddress(bytes4)")] + pub struct FacetAddressCall { + pub function_selector: [u8; 4], } - ///Container type for all input parameters for the `checkStakingAmounts` function with signature `checkStakingAmounts(address)` and selector `0x49919966` + ///Container type for all input parameters for the `facetAddresses` function with signature `facetAddresses()` and selector `0x52ef6b2c` #[derive( Clone, ::ethers::contract::EthCall, @@ -16692,11 +19849,9 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "checkStakingAmounts", abi = "checkStakingAmounts(address)")] - pub struct CheckStakingAmountsCall { - pub staker_address: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `checkVersion` function with signature `checkVersion(uint256,(uint256,uint256,uint256))` and selector `0xcffbfc20` + #[ethcall(name = "facetAddresses", abi = "facetAddresses()")] + pub struct FacetAddressesCall; + ///Container type for all input parameters for the `facetFunctionSelectors` function with signature `facetFunctionSelectors(address)` and selector `0xadfca15e` #[derive( Clone, ::ethers::contract::EthCall, @@ -16709,15 +19864,11 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "checkVersion", - abi = "checkVersion(uint256,(uint256,uint256,uint256))" - )] - pub struct CheckVersionCall { - pub realm_id: ::ethers::core::types::U256, - pub version: Version, + #[ethcall(name = "facetFunctionSelectors", abi = "facetFunctionSelectors(address)")] + pub struct FacetFunctionSelectorsCall { + pub facet: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `claimFixedCostRewards` function with signature `claimFixedCostRewards(uint256,uint256)` and selector `0xcc5e546b` + ///Container type for all input parameters for the `facets` function with signature `facets()` and selector `0x7a0ed627` #[derive( Clone, ::ethers::contract::EthCall, @@ -16730,15 +19881,9 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "claimFixedCostRewards", - abi = "claimFixedCostRewards(uint256,uint256)" - )] - pub struct ClaimFixedCostRewardsCall { - pub realm_id: ::ethers::core::types::U256, - pub max_number_of_epochs_to_claim: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `claimStakeRewards` function with signature `claimStakeRewards(uint256,address,uint256,uint256)` and selector `0x0ffb0d94` + #[ethcall(name = "facets", abi = "facets()")] + pub struct FacetsCall; + ///Container type for all input parameters for the `failed` function with signature `failed()` and selector `0xba414fa6` #[derive( Clone, ::ethers::contract::EthCall, @@ -16751,17 +19896,9 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "claimStakeRewards", - abi = "claimStakeRewards(uint256,address,uint256,uint256)" - )] - pub struct ClaimStakeRewardsCall { - pub realm_id: ::ethers::core::types::U256, - pub staker_address: ::ethers::core::types::Address, - pub stake_record_id: ::ethers::core::types::U256, - pub max_number_of_epochs_to_claim: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `claimValidatorCommission` function with signature `claimValidatorCommission(uint256,uint256)` and selector `0x123eab4b` + #[ethcall(name = "failed", abi = "failed()")] + pub struct FailedCall; + ///Container type for all input parameters for the `getActiveUnkickedValidatorCount` function with signature `getActiveUnkickedValidatorCount(uint256)` and selector `0x7a808c0d` #[derive( Clone, ::ethers::contract::EthCall, @@ -16775,14 +19912,13 @@ pub mod staking { Hash )] #[ethcall( - name = "claimValidatorCommission", - abi = "claimValidatorCommission(uint256,uint256)" + name = "getActiveUnkickedValidatorCount", + abi = "getActiveUnkickedValidatorCount(uint256)" )] - pub struct ClaimValidatorCommissionCall { + pub struct GetActiveUnkickedValidatorCountCall { pub realm_id: ::ethers::core::types::U256, - pub max_number_of_epochs_to_claim: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `complaintConfig` function with signature `complaintConfig(uint256)` and selector `0x02f6da56` + ///Container type for all input parameters for the `getActiveUnkickedValidatorStructs` function with signature `getActiveUnkickedValidatorStructs(uint256)` and selector `0xe4ccc020` #[derive( Clone, ::ethers::contract::EthCall, @@ -16795,11 +19931,14 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "complaintConfig", abi = "complaintConfig(uint256)")] - pub struct ComplaintConfigCall { - pub reason: ::ethers::core::types::U256, + #[ethcall( + name = "getActiveUnkickedValidatorStructs", + abi = "getActiveUnkickedValidatorStructs(uint256)" + )] + pub struct GetActiveUnkickedValidatorStructsCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `contractResolver` function with signature `contractResolver()` and selector `0x50d17b5e` + ///Container type for all input parameters for the `getActiveUnkickedValidatorStructsAndCounts` function with signature `getActiveUnkickedValidatorStructsAndCounts(uint256)` and selector `0xd09cd5a8` #[derive( Clone, ::ethers::contract::EthCall, @@ -16812,9 +19951,14 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "contractResolver", abi = "contractResolver()")] - pub struct ContractResolverCall; - ///Container type for all input parameters for the `countOfCurrentValidatorsReadyForNextEpoch` function with signature `countOfCurrentValidatorsReadyForNextEpoch(uint256)` and selector `0x31232f31` + #[ethcall( + name = "getActiveUnkickedValidatorStructsAndCounts", + abi = "getActiveUnkickedValidatorStructsAndCounts(uint256)" + )] + pub struct GetActiveUnkickedValidatorStructsAndCountsCall { + pub realm_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `getActiveUnkickedValidators` function with signature `getActiveUnkickedValidators(uint256)` and selector `0x8b6de0d1` #[derive( Clone, ::ethers::contract::EthCall, @@ -16828,13 +19972,13 @@ pub mod staking { Hash )] #[ethcall( - name = "countOfCurrentValidatorsReadyForNextEpoch", - abi = "countOfCurrentValidatorsReadyForNextEpoch(uint256)" + name = "getActiveUnkickedValidators", + abi = "getActiveUnkickedValidators(uint256)" )] - pub struct CountOfCurrentValidatorsReadyForNextEpochCall { + pub struct GetActiveUnkickedValidatorsCall { pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `countOfNextValidatorsReadyForNextEpoch` function with signature `countOfNextValidatorsReadyForNextEpoch(uint256)` and selector `0xdce6f078` + ///Container type for all input parameters for the `getAllReserveValidators` function with signature `getAllReserveValidators()` and selector `0xbd8578d6` #[derive( Clone, ::ethers::contract::EthCall, @@ -16847,14 +19991,9 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "countOfNextValidatorsReadyForNextEpoch", - abi = "countOfNextValidatorsReadyForNextEpoch(uint256)" - )] - pub struct CountOfNextValidatorsReadyForNextEpochCall { - pub realm_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `currentValidatorCountForConsensus` function with signature `currentValidatorCountForConsensus(uint256)` and selector `0x9423f589` + #[ethcall(name = "getAllReserveValidators", abi = "getAllReserveValidators()")] + pub struct GetAllReserveValidatorsCall; + ///Container type for all input parameters for the `getAllUnkickedValidators` function with signature `getAllUnkickedValidators()` and selector `0x0df47a24` #[derive( Clone, ::ethers::contract::EthCall, @@ -16867,14 +20006,9 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "currentValidatorCountForConsensus", - abi = "currentValidatorCountForConsensus(uint256)" - )] - pub struct CurrentValidatorCountForConsensusCall { - pub realm_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `decreaseRewardPool` function with signature `decreaseRewardPool(uint256,uint256)` and selector `0xfc36f915` + #[ethcall(name = "getAllUnkickedValidators", abi = "getAllUnkickedValidators()")] + pub struct GetAllUnkickedValidatorsCall; + ///Container type for all input parameters for the `getAllValidators` function with signature `getAllValidators()` and selector `0xf3513a37` #[derive( Clone, ::ethers::contract::EthCall, @@ -16887,12 +20021,9 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "decreaseRewardPool", abi = "decreaseRewardPool(uint256,uint256)")] - pub struct DecreaseRewardPoolCall { - pub realm_id: ::ethers::core::types::U256, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `deleteKeySet` function with signature `deleteKeySet(string)` and selector `0x0815b188` + #[ethcall(name = "getAllValidators", abi = "getAllValidators()")] + pub struct GetAllValidatorsCall; + ///Container type for all input parameters for the `getApproved` function with signature `getApproved(uint256)` and selector `0x081812fc` #[derive( Clone, ::ethers::contract::EthCall, @@ -16905,11 +20036,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "deleteKeySet", abi = "deleteKeySet(string)")] - pub struct DeleteKeySetCall { - pub identifier: ::std::string::String, + #[ethcall(name = "getApproved", abi = "getApproved(uint256)")] + pub struct GetApprovedCall { + pub token_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `diamondCut` function with signature `diamondCut((address,uint8,bytes4[])[],address,bytes)` and selector `0x1f931c1c` + ///Container type for all input parameters for the `getAttestedPubKey` function with signature `getAttestedPubKey(address)` and selector `0xe9332ea7` #[derive( Clone, ::ethers::contract::EthCall, @@ -16922,16 +20053,11 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "diamondCut", - abi = "diamondCut((address,uint8,bytes4[])[],address,bytes)" - )] - pub struct DiamondCutCall { - pub diamond_cut: ::std::vec::Vec, - pub init: ::ethers::core::types::Address, - pub calldata: ::ethers::core::types::Bytes, + #[ethcall(name = "getAttestedPubKey", abi = "getAttestedPubKey(address)")] + pub struct GetAttestedPubKeyCall { + pub attested_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `emitClearOfflinePhaseData` function with signature `emitClearOfflinePhaseData(uint256)` and selector `0x00a52713` + ///Container type for all input parameters for the `getCurrentRealmIdForStakerAddress` function with signature `getCurrentRealmIdForStakerAddress(address)` and selector `0x88de4e25` #[derive( Clone, ::ethers::contract::EthCall, @@ -16945,13 +20071,13 @@ pub mod staking { Hash )] #[ethcall( - name = "emitClearOfflinePhaseData", - abi = "emitClearOfflinePhaseData(uint256)" + name = "getCurrentRealmIdForStakerAddress", + abi = "getCurrentRealmIdForStakerAddress(address)" )] - pub struct EmitClearOfflinePhaseDataCall { - pub data_type: ::ethers::core::types::U256, + pub struct GetCurrentRealmIdForStakerAddressCall { + pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `emitCountOfflinePhaseData` function with signature `emitCountOfflinePhaseData(uint256)` and selector `0x9a74745d` + ///Container type for all input parameters for the `getDelegatedStakersWithUnfreezingStakes` function with signature `getDelegatedStakersWithUnfreezingStakes(address,uint256,uint256)` and selector `0x9fe51529` #[derive( Clone, ::ethers::contract::EthCall, @@ -16965,13 +20091,15 @@ pub mod staking { Hash )] #[ethcall( - name = "emitCountOfflinePhaseData", - abi = "emitCountOfflinePhaseData(uint256)" + name = "getDelegatedStakersWithUnfreezingStakes", + abi = "getDelegatedStakersWithUnfreezingStakes(address,uint256,uint256)" )] - pub struct EmitCountOfflinePhaseDataCall { - pub data_type: ::ethers::core::types::U256, + pub struct GetDelegatedStakersWithUnfreezingStakesCall { + pub validator_address: ::ethers::core::types::Address, + pub limit: ::ethers::core::types::U256, + pub offset: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `epoch` function with signature `epoch(uint256)` and selector `0x5487c577` + ///Container type for all input parameters for the `getDelegatedStakersWithUnfreezingStakesCount` function with signature `getDelegatedStakersWithUnfreezingStakesCount(address)` and selector `0x8c3ccf4c` #[derive( Clone, ::ethers::contract::EthCall, @@ -16984,11 +20112,14 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "epoch", abi = "epoch(uint256)")] - pub struct EpochCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall( + name = "getDelegatedStakersWithUnfreezingStakesCount", + abi = "getDelegatedStakersWithUnfreezingStakesCount(address)" + )] + pub struct GetDelegatedStakersWithUnfreezingStakesCountCall { + pub validator_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `exit` function with signature `exit()` and selector `0xe9fad8ee` + ///Container type for all input parameters for the `getEmptyStakeRecordSlots` function with signature `getEmptyStakeRecordSlots(address,address)` and selector `0xa6f67c51` #[derive( Clone, ::ethers::contract::EthCall, @@ -17001,9 +20132,15 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "exit", abi = "exit()")] - pub struct ExitCall; - ///Container type for all input parameters for the `facetAddress` function with signature `facetAddress(bytes4)` and selector `0xcdffacc6` + #[ethcall( + name = "getEmptyStakeRecordSlots", + abi = "getEmptyStakeRecordSlots(address,address)" + )] + pub struct GetEmptyStakeRecordSlotsCall { + pub user_staker_address: ::ethers::core::types::Address, + pub operator_staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `getKeySet` function with signature `getKeySet(string)` and selector `0xa305e5fe` #[derive( Clone, ::ethers::contract::EthCall, @@ -17016,11 +20153,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "facetAddress", abi = "facetAddress(bytes4)")] - pub struct FacetAddressCall { - pub function_selector: [u8; 4], + #[ethcall(name = "getKeySet", abi = "getKeySet(string)")] + pub struct GetKeySetCall { + pub identifier: ::std::string::String, } - ///Container type for all input parameters for the `facetAddresses` function with signature `facetAddresses()` and selector `0x52ef6b2c` + ///Container type for all input parameters for the `getKeyTypes` function with signature `getKeyTypes()` and selector `0xf1b877a8` #[derive( Clone, ::ethers::contract::EthCall, @@ -17033,9 +20170,9 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "facetAddresses", abi = "facetAddresses()")] - pub struct FacetAddressesCall; - ///Container type for all input parameters for the `facetFunctionSelectors` function with signature `facetFunctionSelectors(address)` and selector `0xadfca15e` + #[ethcall(name = "getKeyTypes", abi = "getKeyTypes()")] + pub struct GetKeyTypesCall; + ///Container type for all input parameters for the `getKickedValidators` function with signature `getKickedValidators(uint256)` and selector `0x4b6afbbb` #[derive( Clone, ::ethers::contract::EthCall, @@ -17048,11 +20185,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "facetFunctionSelectors", abi = "facetFunctionSelectors(address)")] - pub struct FacetFunctionSelectorsCall { - pub facet: ::ethers::core::types::Address, + #[ethcall(name = "getKickedValidators", abi = "getKickedValidators(uint256)")] + pub struct GetKickedValidatorsCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `facets` function with signature `facets()` and selector `0x7a0ed627` + ///Container type for all input parameters for the `getLastStakeRecord` function with signature `getLastStakeRecord(address,address)` and selector `0xfc73fb85` #[derive( Clone, ::ethers::contract::EthCall, @@ -17065,9 +20202,12 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "facets", abi = "facets()")] - pub struct FacetsCall; - ///Container type for all input parameters for the `getActiveUnkickedValidatorCount` function with signature `getActiveUnkickedValidatorCount(uint256)` and selector `0x7a808c0d` + #[ethcall(name = "getLastStakeRecord", abi = "getLastStakeRecord(address,address)")] + pub struct GetLastStakeRecordCall { + pub user: ::ethers::core::types::Address, + pub staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `getLitCirc` function with signature `getLitCirc()` and selector `0xebc17602` #[derive( Clone, ::ethers::contract::EthCall, @@ -17080,14 +20220,9 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "getActiveUnkickedValidatorCount", - abi = "getActiveUnkickedValidatorCount(uint256)" - )] - pub struct GetActiveUnkickedValidatorCountCall { - pub realm_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `getActiveUnkickedValidatorStructs` function with signature `getActiveUnkickedValidatorStructs(uint256)` and selector `0xe4ccc020` + #[ethcall(name = "getLitCirc", abi = "getLitCirc()")] + pub struct GetLitCircCall; + ///Container type for all input parameters for the `getLowestRewardEpochNumber` function with signature `getLowestRewardEpochNumber()` and selector `0x3866c0ef` #[derive( Clone, ::ethers::contract::EthCall, @@ -17100,14 +20235,9 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "getActiveUnkickedValidatorStructs", - abi = "getActiveUnkickedValidatorStructs(uint256)" - )] - pub struct GetActiveUnkickedValidatorStructsCall { - pub realm_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `getActiveUnkickedValidatorStructsAndCounts` function with signature `getActiveUnkickedValidatorStructsAndCounts(uint256)` and selector `0xd09cd5a8` + #[ethcall(name = "getLowestRewardEpochNumber", abi = "getLowestRewardEpochNumber()")] + pub struct GetLowestRewardEpochNumberCall; + ///Container type for all input parameters for the `getMaxVersion` function with signature `getMaxVersion(uint256)` and selector `0x73dd15ac` #[derive( Clone, ::ethers::contract::EthCall, @@ -17120,14 +20250,11 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "getActiveUnkickedValidatorStructsAndCounts", - abi = "getActiveUnkickedValidatorStructsAndCounts(uint256)" - )] - pub struct GetActiveUnkickedValidatorStructsAndCountsCall { + #[ethcall(name = "getMaxVersion", abi = "getMaxVersion(uint256)")] + pub struct GetMaxVersionCall { pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getActiveUnkickedValidators` function with signature `getActiveUnkickedValidators(uint256)` and selector `0x8b6de0d1` + ///Container type for all input parameters for the `getMaxVersionString` function with signature `getMaxVersionString(uint256)` and selector `0x64a481f5` #[derive( Clone, ::ethers::contract::EthCall, @@ -17137,17 +20264,14 @@ pub mod staking { Default, Debug, PartialEq, - Eq, - Hash - )] - #[ethcall( - name = "getActiveUnkickedValidators", - abi = "getActiveUnkickedValidators(uint256)" + Eq, + Hash )] - pub struct GetActiveUnkickedValidatorsCall { + #[ethcall(name = "getMaxVersionString", abi = "getMaxVersionString(uint256)")] + pub struct GetMaxVersionStringCall { pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getAllReserveValidators` function with signature `getAllReserveValidators()` and selector `0xbd8578d6` + ///Container type for all input parameters for the `getMaximumStake` function with signature `getMaximumStake()` and selector `0x468a4883` #[derive( Clone, ::ethers::contract::EthCall, @@ -17160,9 +20284,9 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getAllReserveValidators", abi = "getAllReserveValidators()")] - pub struct GetAllReserveValidatorsCall; - ///Container type for all input parameters for the `getAllUnkickedValidators` function with signature `getAllUnkickedValidators()` and selector `0x0df47a24` + #[ethcall(name = "getMaximumStake", abi = "getMaximumStake()")] + pub struct GetMaximumStakeCall; + ///Container type for all input parameters for the `getMinVersion` function with signature `getMinVersion(uint256)` and selector `0x18443e59` #[derive( Clone, ::ethers::contract::EthCall, @@ -17175,9 +20299,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getAllUnkickedValidators", abi = "getAllUnkickedValidators()")] - pub struct GetAllUnkickedValidatorsCall; - ///Container type for all input parameters for the `getAllValidators` function with signature `getAllValidators()` and selector `0xf3513a37` + #[ethcall(name = "getMinVersion", abi = "getMinVersion(uint256)")] + pub struct GetMinVersionCall { + pub realm_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `getMinVersionString` function with signature `getMinVersionString(uint256)` and selector `0xf57610e3` #[derive( Clone, ::ethers::contract::EthCall, @@ -17190,9 +20316,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getAllValidators", abi = "getAllValidators()")] - pub struct GetAllValidatorsCall; - ///Container type for all input parameters for the `getApproved` function with signature `getApproved(uint256)` and selector `0x081812fc` + #[ethcall(name = "getMinVersionString", abi = "getMinVersionString(uint256)")] + pub struct GetMinVersionStringCall { + pub realm_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `getMinimumSelfStake` function with signature `getMinimumSelfStake()` and selector `0x8bc97a37` #[derive( Clone, ::ethers::contract::EthCall, @@ -17205,11 +20333,9 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getApproved", abi = "getApproved(uint256)")] - pub struct GetApprovedCall { - pub token_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `getAttestedPubKey` function with signature `getAttestedPubKey(address)` and selector `0xe9332ea7` + #[ethcall(name = "getMinimumSelfStake", abi = "getMinimumSelfStake()")] + pub struct GetMinimumSelfStakeCall; + ///Container type for all input parameters for the `getMinimumStake` function with signature `getMinimumStake()` and selector `0xd9bbd278` #[derive( Clone, ::ethers::contract::EthCall, @@ -17222,11 +20348,9 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getAttestedPubKey", abi = "getAttestedPubKey(address)")] - pub struct GetAttestedPubKeyCall { - pub attested_address: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `getCurrentRealmIdForStakerAddress` function with signature `getCurrentRealmIdForStakerAddress(address)` and selector `0x88de4e25` + #[ethcall(name = "getMinimumStake", abi = "getMinimumStake()")] + pub struct GetMinimumStakeCall; + ///Container type for all input parameters for the `getMostRecentStakeRecord` function with signature `getMostRecentStakeRecord(address,address)` and selector `0x7d0f412f` #[derive( Clone, ::ethers::contract::EthCall, @@ -17240,13 +20364,14 @@ pub mod staking { Hash )] #[ethcall( - name = "getCurrentRealmIdForStakerAddress", - abi = "getCurrentRealmIdForStakerAddress(address)" + name = "getMostRecentStakeRecord", + abi = "getMostRecentStakeRecord(address,address)" )] - pub struct GetCurrentRealmIdForStakerAddressCall { - pub staker_address: ::ethers::core::types::Address, + pub struct GetMostRecentStakeRecordCall { + pub user_staker_address: ::ethers::core::types::Address, + pub operator_staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getDelegatedStakersWithUnfreezingStakes` function with signature `getDelegatedStakersWithUnfreezingStakes(address,uint256,uint256)` and selector `0x9fe51529` + ///Container type for all input parameters for the `getNodeAttestedPubKeyMappings` function with signature `getNodeAttestedPubKeyMappings(address[])` and selector `0x88790aee` #[derive( Clone, ::ethers::contract::EthCall, @@ -17260,15 +20385,13 @@ pub mod staking { Hash )] #[ethcall( - name = "getDelegatedStakersWithUnfreezingStakes", - abi = "getDelegatedStakersWithUnfreezingStakes(address,uint256,uint256)" + name = "getNodeAttestedPubKeyMappings", + abi = "getNodeAttestedPubKeyMappings(address[])" )] - pub struct GetDelegatedStakersWithUnfreezingStakesCall { - pub validator_address: ::ethers::core::types::Address, - pub limit: ::ethers::core::types::U256, - pub offset: ::ethers::core::types::U256, + pub struct GetNodeAttestedPubKeyMappingsCall { + pub addresses: ::std::vec::Vec<::ethers::core::types::Address>, } - ///Container type for all input parameters for the `getDelegatedStakersWithUnfreezingStakesCount` function with signature `getDelegatedStakersWithUnfreezingStakesCount(address)` and selector `0x8c3ccf4c` + ///Container type for all input parameters for the `getNodeDemerits` function with signature `getNodeDemerits(address)` and selector `0xa8d6cedd` #[derive( Clone, ::ethers::contract::EthCall, @@ -17281,14 +20404,11 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "getDelegatedStakersWithUnfreezingStakesCount", - abi = "getDelegatedStakersWithUnfreezingStakesCount(address)" - )] - pub struct GetDelegatedStakersWithUnfreezingStakesCountCall { - pub validator_address: ::ethers::core::types::Address, + #[ethcall(name = "getNodeDemerits", abi = "getNodeDemerits(address)")] + pub struct GetNodeDemeritsCall { + pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getEmptyStakeRecordSlots` function with signature `getEmptyStakeRecordSlots(address,address)` and selector `0xa6f67c51` + ///Container type for all input parameters for the `getNodeStakerAddressMappings` function with signature `getNodeStakerAddressMappings(address[])` and selector `0x90fba112` #[derive( Clone, ::ethers::contract::EthCall, @@ -17302,14 +20422,13 @@ pub mod staking { Hash )] #[ethcall( - name = "getEmptyStakeRecordSlots", - abi = "getEmptyStakeRecordSlots(address,address)" + name = "getNodeStakerAddressMappings", + abi = "getNodeStakerAddressMappings(address[])" )] - pub struct GetEmptyStakeRecordSlotsCall { - pub user_staker_address: ::ethers::core::types::Address, - pub operator_staker_address: ::ethers::core::types::Address, + pub struct GetNodeStakerAddressMappingsCall { + pub addresses: ::std::vec::Vec<::ethers::core::types::Address>, } - ///Container type for all input parameters for the `getKeySet` function with signature `getKeySet(string)` and selector `0xa305e5fe` + ///Container type for all input parameters for the `getNonShadowValidators` function with signature `getNonShadowValidators(uint256)` and selector `0x65e3dcf6` #[derive( Clone, ::ethers::contract::EthCall, @@ -17322,11 +20441,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getKeySet", abi = "getKeySet(string)")] - pub struct GetKeySetCall { - pub identifier: ::std::string::String, + #[ethcall(name = "getNonShadowValidators", abi = "getNonShadowValidators(uint256)")] + pub struct GetNonShadowValidatorsCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getKeyTypes` function with signature `getKeyTypes()` and selector `0xf1b877a8` + ///Container type for all input parameters for the `getNonShadowValidatorsInCurrentEpochLength` function with signature `getNonShadowValidatorsInCurrentEpochLength(uint256)` and selector `0x399ebc13` #[derive( Clone, ::ethers::contract::EthCall, @@ -17339,9 +20458,14 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getKeyTypes", abi = "getKeyTypes()")] - pub struct GetKeyTypesCall; - ///Container type for all input parameters for the `getKickedValidators` function with signature `getKickedValidators(uint256)` and selector `0x4b6afbbb` + #[ethcall( + name = "getNonShadowValidatorsInCurrentEpochLength", + abi = "getNonShadowValidatorsInCurrentEpochLength(uint256)" + )] + pub struct GetNonShadowValidatorsInCurrentEpochLengthCall { + pub realm_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `getRealmIdForStakerAddress` function with signature `getRealmIdForStakerAddress(address)` and selector `0xaa3bed0b` #[derive( Clone, ::ethers::contract::EthCall, @@ -17354,11 +20478,14 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getKickedValidators", abi = "getKickedValidators(uint256)")] - pub struct GetKickedValidatorsCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall( + name = "getRealmIdForStakerAddress", + abi = "getRealmIdForStakerAddress(address)" + )] + pub struct GetRealmIdForStakerAddressCall { + pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getLastStakeRecord` function with signature `getLastStakeRecord(address,address)` and selector `0xfc73fb85` + ///Container type for all input parameters for the `getRewardEpoch` function with signature `getRewardEpoch(address,uint256)` and selector `0x7e867f87` #[derive( Clone, ::ethers::contract::EthCall, @@ -17371,12 +20498,12 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getLastStakeRecord", abi = "getLastStakeRecord(address,address)")] - pub struct GetLastStakeRecordCall { - pub user: ::ethers::core::types::Address, + #[ethcall(name = "getRewardEpoch", abi = "getRewardEpoch(address,uint256)")] + pub struct GetRewardEpochCall { pub staker_address: ::ethers::core::types::Address, + pub reward_epoch_number: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getLitCirc` function with signature `getLitCirc()` and selector `0xebc17602` + ///Container type for all input parameters for the `getRewardEpochGlobalStats` function with signature `getRewardEpochGlobalStats(uint256)` and selector `0x2c9d1844` #[derive( Clone, ::ethers::contract::EthCall, @@ -17389,9 +20516,14 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getLitCirc", abi = "getLitCirc()")] - pub struct GetLitCircCall; - ///Container type for all input parameters for the `getLowestRewardEpochNumber` function with signature `getLowestRewardEpochNumber()` and selector `0x3866c0ef` + #[ethcall( + name = "getRewardEpochGlobalStats", + abi = "getRewardEpochGlobalStats(uint256)" + )] + pub struct GetRewardEpochGlobalStatsCall { + pub epoch_number: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `getRewardEpochNumber` function with signature `getRewardEpochNumber(uint256)` and selector `0xba1d8fef` #[derive( Clone, ::ethers::contract::EthCall, @@ -17404,9 +20536,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getLowestRewardEpochNumber", abi = "getLowestRewardEpochNumber()")] - pub struct GetLowestRewardEpochNumberCall; - ///Container type for all input parameters for the `getMaxVersion` function with signature `getMaxVersion(uint256)` and selector `0x73dd15ac` + #[ethcall(name = "getRewardEpochNumber", abi = "getRewardEpochNumber(uint256)")] + pub struct GetRewardEpochNumberCall { + pub realm_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `getRewardEpochView` function with signature `getRewardEpochView(address,uint256)` and selector `0x709fe8a3` #[derive( Clone, ::ethers::contract::EthCall, @@ -17419,11 +20553,12 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getMaxVersion", abi = "getMaxVersion(uint256)")] - pub struct GetMaxVersionCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall(name = "getRewardEpochView", abi = "getRewardEpochView(address,uint256)")] + pub struct GetRewardEpochViewCall { + pub staker_address: ::ethers::core::types::Address, + pub reward_epoch_number: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getMaxVersionString` function with signature `getMaxVersionString(uint256)` and selector `0x64a481f5` + ///Container type for all input parameters for the `getSelfStakeRecordCount` function with signature `getSelfStakeRecordCount(address)` and selector `0x01362dc3` #[derive( Clone, ::ethers::contract::EthCall, @@ -17436,11 +20571,14 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getMaxVersionString", abi = "getMaxVersionString(uint256)")] - pub struct GetMaxVersionStringCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall( + name = "getSelfStakeRecordCount", + abi = "getSelfStakeRecordCount(address)" + )] + pub struct GetSelfStakeRecordCountCall { + pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getMaximumStake` function with signature `getMaximumStake()` and selector `0x468a4883` + ///Container type for all input parameters for the `getShadowRealmIdForStakerAddress` function with signature `getShadowRealmIdForStakerAddress(address)` and selector `0x455636de` #[derive( Clone, ::ethers::contract::EthCall, @@ -17453,9 +20591,14 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getMaximumStake", abi = "getMaximumStake()")] - pub struct GetMaximumStakeCall; - ///Container type for all input parameters for the `getMinVersion` function with signature `getMinVersion(uint256)` and selector `0x18443e59` + #[ethcall( + name = "getShadowRealmIdForStakerAddress", + abi = "getShadowRealmIdForStakerAddress(address)" + )] + pub struct GetShadowRealmIdForStakerAddressCall { + pub staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `getShadowValidators` function with signature `getShadowValidators(uint256)` and selector `0xcc090c8a` #[derive( Clone, ::ethers::contract::EthCall, @@ -17468,11 +20611,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getMinVersion", abi = "getMinVersion(uint256)")] - pub struct GetMinVersionCall { + #[ethcall(name = "getShadowValidators", abi = "getShadowValidators(uint256)")] + pub struct GetShadowValidatorsCall { pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getMinVersionString` function with signature `getMinVersionString(uint256)` and selector `0xf57610e3` + ///Container type for all input parameters for the `getStakeRecord` function with signature `getStakeRecord(address,uint256,address)` and selector `0x114ed11d` #[derive( Clone, ::ethers::contract::EthCall, @@ -17485,11 +20628,13 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getMinVersionString", abi = "getMinVersionString(uint256)")] - pub struct GetMinVersionStringCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall(name = "getStakeRecord", abi = "getStakeRecord(address,uint256,address)")] + pub struct GetStakeRecordCall { + pub staker_address: ::ethers::core::types::Address, + pub record_id: ::ethers::core::types::U256, + pub user_staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getMinimumSelfStake` function with signature `getMinimumSelfStake()` and selector `0x8bc97a37` + ///Container type for all input parameters for the `getStakeRecordCount` function with signature `getStakeRecordCount(address,address)` and selector `0x125fc3d4` #[derive( Clone, ::ethers::contract::EthCall, @@ -17502,9 +20647,15 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getMinimumSelfStake", abi = "getMinimumSelfStake()")] - pub struct GetMinimumSelfStakeCall; - ///Container type for all input parameters for the `getMinimumStake` function with signature `getMinimumStake()` and selector `0xd9bbd278` + #[ethcall( + name = "getStakeRecordCount", + abi = "getStakeRecordCount(address,address)" + )] + pub struct GetStakeRecordCountCall { + pub user_staker_address: ::ethers::core::types::Address, + pub operator_staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `getStakeRecordsForUser` function with signature `getStakeRecordsForUser(address,address)` and selector `0xdc1fab7f` #[derive( Clone, ::ethers::contract::EthCall, @@ -17517,9 +20668,15 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getMinimumStake", abi = "getMinimumStake()")] - pub struct GetMinimumStakeCall; - ///Container type for all input parameters for the `getNodeAttestedPubKeyMappings` function with signature `getNodeAttestedPubKeyMappings(address[])` and selector `0x88790aee` + #[ethcall( + name = "getStakeRecordsForUser", + abi = "getStakeRecordsForUser(address,address)" + )] + pub struct GetStakeRecordsForUserCall { + pub user_staker_address: ::ethers::core::types::Address, + pub operator_staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `getStakeWeightInEpoch` function with signature `getStakeWeightInEpoch(address,uint256,address,uint256)` and selector `0x580f68db` #[derive( Clone, ::ethers::contract::EthCall, @@ -17533,13 +20690,16 @@ pub mod staking { Hash )] #[ethcall( - name = "getNodeAttestedPubKeyMappings", - abi = "getNodeAttestedPubKeyMappings(address[])" + name = "getStakeWeightInEpoch", + abi = "getStakeWeightInEpoch(address,uint256,address,uint256)" )] - pub struct GetNodeAttestedPubKeyMappingsCall { - pub addresses: ::std::vec::Vec<::ethers::core::types::Address>, + pub struct GetStakeWeightInEpochCall { + pub staker_address: ::ethers::core::types::Address, + pub record_id: ::ethers::core::types::U256, + pub user_staker_address: ::ethers::core::types::Address, + pub reward_epoch_number: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getNodeDemerits` function with signature `getNodeDemerits(address)` and selector `0xa8d6cedd` + ///Container type for all input parameters for the `getThreshold` function with signature `getThreshold(uint256)` and selector `0x4615d5e9` #[derive( Clone, ::ethers::contract::EthCall, @@ -17552,11 +20712,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getNodeDemerits", abi = "getNodeDemerits(address)")] - pub struct GetNodeDemeritsCall { - pub staker_address: ::ethers::core::types::Address, + #[ethcall(name = "getThreshold", abi = "getThreshold(uint256)")] + pub struct GetThresholdCall { + pub node_count: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getNodeStakerAddressMappings` function with signature `getNodeStakerAddressMappings(address[])` and selector `0x90fba112` + ///Container type for all input parameters for the `getTimelockInEpoch` function with signature `getTimelockInEpoch(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)` and selector `0x2db912e4` #[derive( Clone, ::ethers::contract::EthCall, @@ -17570,13 +20730,30 @@ pub mod staking { Hash )] #[ethcall( - name = "getNodeStakerAddressMappings", - abi = "getNodeStakerAddressMappings(address[])" + name = "getTimelockInEpoch", + abi = "getTimelockInEpoch(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)" + )] + pub struct GetTimelockInEpochCall { + pub staker_address: ::ethers::core::types::Address, + pub stake_record: StakeRecord, + pub reward_epoch_number: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `getTokenContractAddress` function with signature `getTokenContractAddress()` and selector `0x22e45584` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash )] - pub struct GetNodeStakerAddressMappingsCall { - pub addresses: ::std::vec::Vec<::ethers::core::types::Address>, - } - ///Container type for all input parameters for the `getNonShadowValidators` function with signature `getNonShadowValidators(uint256)` and selector `0x65e3dcf6` + #[ethcall(name = "getTokenContractAddress", abi = "getTokenContractAddress()")] + pub struct GetTokenContractAddressCall; + ///Container type for all input parameters for the `getTokenPrice` function with signature `getTokenPrice()` and selector `0x4b94f50e` #[derive( Clone, ::ethers::contract::EthCall, @@ -17589,11 +20766,9 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getNonShadowValidators", abi = "getNonShadowValidators(uint256)")] - pub struct GetNonShadowValidatorsCall { - pub realm_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `getNonShadowValidatorsInCurrentEpochLength` function with signature `getNonShadowValidatorsInCurrentEpochLength(uint256)` and selector `0x399ebc13` + #[ethcall(name = "getTokenPrice", abi = "getTokenPrice()")] + pub struct GetTokenPriceCall; + ///Container type for all input parameters for the `getTokensStaked` function with signature `getTokensStaked(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)` and selector `0x0fd78304` #[derive( Clone, ::ethers::contract::EthCall, @@ -17607,13 +20782,15 @@ pub mod staking { Hash )] #[ethcall( - name = "getNonShadowValidatorsInCurrentEpochLength", - abi = "getNonShadowValidatorsInCurrentEpochLength(uint256)" + name = "getTokensStaked", + abi = "getTokensStaked(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)" )] - pub struct GetNonShadowValidatorsInCurrentEpochLengthCall { - pub realm_id: ::ethers::core::types::U256, + pub struct GetTokensStakedCall { + pub staker_address: ::ethers::core::types::Address, + pub stake_record: StakeRecord, + pub reward_epoch_number: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getRealmIdForStakerAddress` function with signature `getRealmIdForStakerAddress(address)` and selector `0xaa3bed0b` + ///Container type for all input parameters for the `getTotalStake` function with signature `getTotalStake(address)` and selector `0x1e7ff8f6` #[derive( Clone, ::ethers::contract::EthCall, @@ -17626,14 +20803,11 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "getRealmIdForStakerAddress", - abi = "getRealmIdForStakerAddress(address)" - )] - pub struct GetRealmIdForStakerAddressCall { + #[ethcall(name = "getTotalStake", abi = "getTotalStake(address)")] + pub struct GetTotalStakeCall { pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getRewardEpoch` function with signature `getRewardEpoch(address,uint256)` and selector `0x7e867f87` + ///Container type for all input parameters for the `getTotalStakeByUser` function with signature `getTotalStakeByUser(address,address)` and selector `0xd349660a` #[derive( Clone, ::ethers::contract::EthCall, @@ -17646,12 +20820,15 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getRewardEpoch", abi = "getRewardEpoch(address,uint256)")] - pub struct GetRewardEpochCall { + #[ethcall( + name = "getTotalStakeByUser", + abi = "getTotalStakeByUser(address,address)" + )] + pub struct GetTotalStakeByUserCall { pub staker_address: ::ethers::core::types::Address, - pub reward_epoch_number: ::ethers::core::types::U256, + pub user: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getRewardEpochGlobalStats` function with signature `getRewardEpochGlobalStats(uint256)` and selector `0x2c9d1844` + ///Container type for all input parameters for the `getTrustedForwarder` function with signature `getTrustedForwarder()` and selector `0xce1b815f` #[derive( Clone, ::ethers::contract::EthCall, @@ -17664,14 +20841,9 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "getRewardEpochGlobalStats", - abi = "getRewardEpochGlobalStats(uint256)" - )] - pub struct GetRewardEpochGlobalStatsCall { - pub epoch_number: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `getRewardEpochNumber` function with signature `getRewardEpochNumber(uint256)` and selector `0xba1d8fef` + #[ethcall(name = "getTrustedForwarder", abi = "getTrustedForwarder()")] + pub struct GetTrustedForwarderCall; + ///Container type for all input parameters for the `getUnfrozenStakeCountForUser` function with signature `getUnfrozenStakeCountForUser(address,address)` and selector `0x5a0909fa` #[derive( Clone, ::ethers::contract::EthCall, @@ -17684,11 +20856,15 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getRewardEpochNumber", abi = "getRewardEpochNumber(uint256)")] - pub struct GetRewardEpochNumberCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall( + name = "getUnfrozenStakeCountForUser", + abi = "getUnfrozenStakeCountForUser(address,address)" + )] + pub struct GetUnfrozenStakeCountForUserCall { + pub user_staker_address: ::ethers::core::types::Address, + pub operator_staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getRewardEpochView` function with signature `getRewardEpochView(address,uint256)` and selector `0x709fe8a3` + ///Container type for all input parameters for the `getValidatorsDelegated` function with signature `getValidatorsDelegated(address)` and selector `0x5b2fcdcf` #[derive( Clone, ::ethers::contract::EthCall, @@ -17701,12 +20877,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getRewardEpochView", abi = "getRewardEpochView(address,uint256)")] - pub struct GetRewardEpochViewCall { - pub staker_address: ::ethers::core::types::Address, - pub reward_epoch_number: ::ethers::core::types::U256, + #[ethcall(name = "getValidatorsDelegated", abi = "getValidatorsDelegated(address)")] + pub struct GetValidatorsDelegatedCall { + pub user: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getSelfStakeRecordCount` function with signature `getSelfStakeRecordCount(address)` and selector `0x01362dc3` + ///Container type for all input parameters for the `getValidatorsInCurrentEpoch` function with signature `getValidatorsInCurrentEpoch(uint256)` and selector `0xeccd9e0e` #[derive( Clone, ::ethers::contract::EthCall, @@ -17720,13 +20895,13 @@ pub mod staking { Hash )] #[ethcall( - name = "getSelfStakeRecordCount", - abi = "getSelfStakeRecordCount(address)" + name = "getValidatorsInCurrentEpoch", + abi = "getValidatorsInCurrentEpoch(uint256)" )] - pub struct GetSelfStakeRecordCountCall { - pub staker_address: ::ethers::core::types::Address, + pub struct GetValidatorsInCurrentEpochCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getShadowRealmIdForStakerAddress` function with signature `getShadowRealmIdForStakerAddress(address)` and selector `0x455636de` + ///Container type for all input parameters for the `getValidatorsInNextEpoch` function with signature `getValidatorsInNextEpoch(uint256)` and selector `0x84bc5324` #[derive( Clone, ::ethers::contract::EthCall, @@ -17740,13 +20915,13 @@ pub mod staking { Hash )] #[ethcall( - name = "getShadowRealmIdForStakerAddress", - abi = "getShadowRealmIdForStakerAddress(address)" + name = "getValidatorsInNextEpoch", + abi = "getValidatorsInNextEpoch(uint256)" )] - pub struct GetShadowRealmIdForStakerAddressCall { - pub staker_address: ::ethers::core::types::Address, + pub struct GetValidatorsInNextEpochCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getShadowValidators` function with signature `getShadowValidators(uint256)` and selector `0xcc090c8a` + ///Container type for all input parameters for the `getValidatorsStructs` function with signature `getValidatorsStructs(address[])` and selector `0x533d463e` #[derive( Clone, ::ethers::contract::EthCall, @@ -17759,11 +20934,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getShadowValidators", abi = "getShadowValidators(uint256)")] - pub struct GetShadowValidatorsCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall(name = "getValidatorsStructs", abi = "getValidatorsStructs(address[])")] + pub struct GetValidatorsStructsCall { + pub staker_addresses: ::std::vec::Vec<::ethers::core::types::Address>, } - ///Container type for all input parameters for the `getStakeRecord` function with signature `getStakeRecord(address,uint256,address)` and selector `0x114ed11d` + ///Container type for all input parameters for the `getValidatorsStructsInCurrentEpoch` function with signature `getValidatorsStructsInCurrentEpoch(uint256)` and selector `0xb0dee6c6` #[derive( Clone, ::ethers::contract::EthCall, @@ -17776,13 +20951,14 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getStakeRecord", abi = "getStakeRecord(address,uint256,address)")] - pub struct GetStakeRecordCall { - pub staker_address: ::ethers::core::types::Address, - pub record_id: ::ethers::core::types::U256, - pub user_staker_address: ::ethers::core::types::Address, + #[ethcall( + name = "getValidatorsStructsInCurrentEpoch", + abi = "getValidatorsStructsInCurrentEpoch(uint256)" + )] + pub struct GetValidatorsStructsInCurrentEpochCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getStakeRecordCount` function with signature `getStakeRecordCount(address,address)` and selector `0x125fc3d4` + ///Container type for all input parameters for the `getValidatorsStructsInNextEpoch` function with signature `getValidatorsStructsInNextEpoch(uint256)` and selector `0x183c5ff0` #[derive( Clone, ::ethers::contract::EthCall, @@ -17796,14 +20972,13 @@ pub mod staking { Hash )] #[ethcall( - name = "getStakeRecordCount", - abi = "getStakeRecordCount(address,address)" + name = "getValidatorsStructsInNextEpoch", + abi = "getValidatorsStructsInNextEpoch(uint256)" )] - pub struct GetStakeRecordCountCall { - pub user_staker_address: ::ethers::core::types::Address, - pub operator_staker_address: ::ethers::core::types::Address, + pub struct GetValidatorsStructsInNextEpochCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getStakeRecordsForUser` function with signature `getStakeRecordsForUser(address,address)` and selector `0xdc1fab7f` + ///Container type for all input parameters for the `getVotingStatusToKickValidator` function with signature `getVotingStatusToKickValidator(uint256,uint256,address,address)` and selector `0x3e1c3693` #[derive( Clone, ::ethers::contract::EthCall, @@ -17817,14 +20992,16 @@ pub mod staking { Hash )] #[ethcall( - name = "getStakeRecordsForUser", - abi = "getStakeRecordsForUser(address,address)" + name = "getVotingStatusToKickValidator", + abi = "getVotingStatusToKickValidator(uint256,uint256,address,address)" )] - pub struct GetStakeRecordsForUserCall { - pub user_staker_address: ::ethers::core::types::Address, - pub operator_staker_address: ::ethers::core::types::Address, + pub struct GetVotingStatusToKickValidatorCall { + pub realm_id: ::ethers::core::types::U256, + pub epoch_number: ::ethers::core::types::U256, + pub validator_to_be_kicked_staker_address: ::ethers::core::types::Address, + pub voter_staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getStakeWeightInEpoch` function with signature `getStakeWeightInEpoch(address,uint256,address,uint256)` and selector `0x580f68db` + ///Container type for all input parameters for the `globalConfig` function with signature `globalConfig()` and selector `0xa7c1abe0` #[derive( Clone, ::ethers::contract::EthCall, @@ -17837,17 +21014,9 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "getStakeWeightInEpoch", - abi = "getStakeWeightInEpoch(address,uint256,address,uint256)" - )] - pub struct GetStakeWeightInEpochCall { - pub staker_address: ::ethers::core::types::Address, - pub record_id: ::ethers::core::types::U256, - pub user_staker_address: ::ethers::core::types::Address, - pub reward_epoch_number: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `getThreshold` function with signature `getThreshold(uint256)` and selector `0x4615d5e9` + #[ethcall(name = "globalConfig", abi = "globalConfig()")] + pub struct GlobalConfigCall; + ///Container type for all input parameters for the `increaseRewardPool` function with signature `increaseRewardPool(uint256,uint256)` and selector `0x0c1ea985` #[derive( Clone, ::ethers::contract::EthCall, @@ -17860,11 +21029,12 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getThreshold", abi = "getThreshold(uint256)")] - pub struct GetThresholdCall { - pub node_count: ::ethers::core::types::U256, + #[ethcall(name = "increaseRewardPool", abi = "increaseRewardPool(uint256,uint256)")] + pub struct IncreaseRewardPoolCall { + pub realm_id: ::ethers::core::types::U256, + pub amount: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getTimelockInEpoch` function with signature `getTimelockInEpoch(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)` and selector `0x2db912e4` + ///Container type for all input parameters for the `increaseStakeRecordAmount` function with signature `increaseStakeRecordAmount(address,uint256,uint256)` and selector `0x61967297` #[derive( Clone, ::ethers::contract::EthCall, @@ -17878,15 +21048,15 @@ pub mod staking { Hash )] #[ethcall( - name = "getTimelockInEpoch", - abi = "getTimelockInEpoch(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)" + name = "increaseStakeRecordAmount", + abi = "increaseStakeRecordAmount(address,uint256,uint256)" )] - pub struct GetTimelockInEpochCall { + pub struct IncreaseStakeRecordAmountCall { pub staker_address: ::ethers::core::types::Address, - pub stake_record: StakeRecord, - pub reward_epoch_number: ::ethers::core::types::U256, + pub stake_record_id: ::ethers::core::types::U256, + pub additional_amount: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getTokenContractAddress` function with signature `getTokenContractAddress()` and selector `0x22e45584` + ///Container type for all input parameters for the `increaseStakeRecordTimelock` function with signature `increaseStakeRecordTimelock(address,uint256,uint256)` and selector `0xc5427758` #[derive( Clone, ::ethers::contract::EthCall, @@ -17899,9 +21069,16 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getTokenContractAddress", abi = "getTokenContractAddress()")] - pub struct GetTokenContractAddressCall; - ///Container type for all input parameters for the `getTokenPrice` function with signature `getTokenPrice()` and selector `0x4b94f50e` + #[ethcall( + name = "increaseStakeRecordTimelock", + abi = "increaseStakeRecordTimelock(address,uint256,uint256)" + )] + pub struct IncreaseStakeRecordTimelockCall { + pub staker_address: ::ethers::core::types::Address, + pub stake_record_id: ::ethers::core::types::U256, + pub additional_time_lock: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `initializeRewardEpoch` function with signature `initializeRewardEpoch(address,uint256,bool)` and selector `0x9654c473` #[derive( Clone, ::ethers::contract::EthCall, @@ -17914,9 +21091,16 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getTokenPrice", abi = "getTokenPrice()")] - pub struct GetTokenPriceCall; - ///Container type for all input parameters for the `getTokensStaked` function with signature `getTokensStaked(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)` and selector `0x0fd78304` + #[ethcall( + name = "initializeRewardEpoch", + abi = "initializeRewardEpoch(address,uint256,bool)" + )] + pub struct InitializeRewardEpochCall { + pub staker_address: ::ethers::core::types::Address, + pub reward_epoch_number: ::ethers::core::types::U256, + pub is_initial: bool, + } + ///Container type for all input parameters for the `isActiveShadowValidator` function with signature `isActiveShadowValidator(uint256,address)` and selector `0x7e7ae34c` #[derive( Clone, ::ethers::contract::EthCall, @@ -17930,15 +21114,14 @@ pub mod staking { Hash )] #[ethcall( - name = "getTokensStaked", - abi = "getTokensStaked(address,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,bool,address,uint256),uint256)" + name = "isActiveShadowValidator", + abi = "isActiveShadowValidator(uint256,address)" )] - pub struct GetTokensStakedCall { + pub struct IsActiveShadowValidatorCall { + pub realm_id: ::ethers::core::types::U256, pub staker_address: ::ethers::core::types::Address, - pub stake_record: StakeRecord, - pub reward_epoch_number: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getTotalStake` function with signature `getTotalStake(address)` and selector `0x1e7ff8f6` + ///Container type for all input parameters for the `isActiveValidator` function with signature `isActiveValidator(uint256,address)` and selector `0xff347ae8` #[derive( Clone, ::ethers::contract::EthCall, @@ -17951,11 +21134,12 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getTotalStake", abi = "getTotalStake(address)")] - pub struct GetTotalStakeCall { + #[ethcall(name = "isActiveValidator", abi = "isActiveValidator(uint256,address)")] + pub struct IsActiveValidatorCall { + pub realm_id: ::ethers::core::types::U256, pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getTotalStakeByUser` function with signature `getTotalStakeByUser(address,address)` and selector `0xd349660a` + ///Container type for all input parameters for the `isActiveValidatorByNodeAddress` function with signature `isActiveValidatorByNodeAddress(uint256,address)` and selector `0x5064c127` #[derive( Clone, ::ethers::contract::EthCall, @@ -17969,14 +21153,14 @@ pub mod staking { Hash )] #[ethcall( - name = "getTotalStakeByUser", - abi = "getTotalStakeByUser(address,address)" + name = "isActiveValidatorByNodeAddress", + abi = "isActiveValidatorByNodeAddress(uint256,address)" )] - pub struct GetTotalStakeByUserCall { - pub staker_address: ::ethers::core::types::Address, - pub user: ::ethers::core::types::Address, + pub struct IsActiveValidatorByNodeAddressCall { + pub realm_id: ::ethers::core::types::U256, + pub account: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getTrustedForwarder` function with signature `getTrustedForwarder()` and selector `0xce1b815f` + ///Container type for all input parameters for the `isActiveValidatorByNodeAddressForNextEpoch` function with signature `isActiveValidatorByNodeAddressForNextEpoch(uint256,address)` and selector `0xeb8f2f27` #[derive( Clone, ::ethers::contract::EthCall, @@ -17989,9 +21173,15 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getTrustedForwarder", abi = "getTrustedForwarder()")] - pub struct GetTrustedForwarderCall; - ///Container type for all input parameters for the `getUnfrozenStakeCountForUser` function with signature `getUnfrozenStakeCountForUser(address,address)` and selector `0x5a0909fa` + #[ethcall( + name = "isActiveValidatorByNodeAddressForNextEpoch", + abi = "isActiveValidatorByNodeAddressForNextEpoch(uint256,address)" + )] + pub struct IsActiveValidatorByNodeAddressForNextEpochCall { + pub realm_id: ::ethers::core::types::U256, + pub node_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `isActiveValidatorForNextEpoch` function with signature `isActiveValidatorForNextEpoch(uint256,address)` and selector `0x26fc6f9b` #[derive( Clone, ::ethers::contract::EthCall, @@ -18005,14 +21195,14 @@ pub mod staking { Hash )] #[ethcall( - name = "getUnfrozenStakeCountForUser", - abi = "getUnfrozenStakeCountForUser(address,address)" - )] - pub struct GetUnfrozenStakeCountForUserCall { - pub user_staker_address: ::ethers::core::types::Address, - pub operator_staker_address: ::ethers::core::types::Address, + name = "isActiveValidatorForNextEpoch", + abi = "isActiveValidatorForNextEpoch(uint256,address)" + )] + pub struct IsActiveValidatorForNextEpochCall { + pub realm_id: ::ethers::core::types::U256, + pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getValidatorsDelegated` function with signature `getValidatorsDelegated(address)` and selector `0x5b2fcdcf` + ///Container type for all input parameters for the `isApprovedForAll` function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5` #[derive( Clone, ::ethers::contract::EthCall, @@ -18025,11 +21215,12 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getValidatorsDelegated", abi = "getValidatorsDelegated(address)")] - pub struct GetValidatorsDelegatedCall { - pub user: ::ethers::core::types::Address, + #[ethcall(name = "isApprovedForAll", abi = "isApprovedForAll(address,address)")] + pub struct IsApprovedForAllCall { + pub owner: ::ethers::core::types::Address, + pub operator: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getValidatorsInCurrentEpoch` function with signature `getValidatorsInCurrentEpoch(uint256)` and selector `0xeccd9e0e` + ///Container type for all input parameters for the `isReadyForNextEpoch` function with signature `isReadyForNextEpoch(uint256)` and selector `0x7fecc451` #[derive( Clone, ::ethers::contract::EthCall, @@ -18042,14 +21233,11 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "getValidatorsInCurrentEpoch", - abi = "getValidatorsInCurrentEpoch(uint256)" - )] - pub struct GetValidatorsInCurrentEpochCall { + #[ethcall(name = "isReadyForNextEpoch", abi = "isReadyForNextEpoch(uint256)")] + pub struct IsReadyForNextEpochCall { pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `getValidatorsInNextEpoch` function with signature `getValidatorsInNextEpoch(uint256)` and selector `0x84bc5324` + ///Container type for all input parameters for the `isRecentValidator` function with signature `isRecentValidator(address)` and selector `0x3c2ef732` #[derive( Clone, ::ethers::contract::EthCall, @@ -18062,14 +21250,11 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "getValidatorsInNextEpoch", - abi = "getValidatorsInNextEpoch(uint256)" - )] - pub struct GetValidatorsInNextEpochCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall(name = "isRecentValidator", abi = "isRecentValidator(address)")] + pub struct IsRecentValidatorCall { + pub node_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getValidatorsStructs` function with signature `getValidatorsStructs(address[])` and selector `0x533d463e` + ///Container type for all input parameters for the `isRecentValidator` function with signature `isRecentValidator(uint256,address)` and selector `0xc974c355` #[derive( Clone, ::ethers::contract::EthCall, @@ -18082,11 +21267,12 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "getValidatorsStructs", abi = "getValidatorsStructs(address[])")] - pub struct GetValidatorsStructsCall { - pub staker_addresses: ::std::vec::Vec<::ethers::core::types::Address>, + #[ethcall(name = "isRecentValidator", abi = "isRecentValidator(uint256,address)")] + pub struct IsRecentValidatorWithRealmIdCall { + pub realm_id: ::ethers::core::types::U256, + pub staker_addresses: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getValidatorsStructsInCurrentEpoch` function with signature `getValidatorsStructsInCurrentEpoch(uint256)` and selector `0xb0dee6c6` + ///Container type for all input parameters for the `isValidatorBanned` function with signature `isValidatorBanned(address)` and selector `0xa92252ae` #[derive( Clone, ::ethers::contract::EthCall, @@ -18099,14 +21285,11 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "getValidatorsStructsInCurrentEpoch", - abi = "getValidatorsStructsInCurrentEpoch(uint256)" - )] - pub struct GetValidatorsStructsInCurrentEpochCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall(name = "isValidatorBanned", abi = "isValidatorBanned(address)")] + pub struct IsValidatorBannedCall { + pub validator: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getValidatorsStructsInNextEpoch` function with signature `getValidatorsStructsInNextEpoch(uint256)` and selector `0x183c5ff0` + ///Container type for all input parameters for the `isValidatorInCurrentEpoch` function with signature `isValidatorInCurrentEpoch(address)` and selector `0xdf8a171f` #[derive( Clone, ::ethers::contract::EthCall, @@ -18120,13 +21303,13 @@ pub mod staking { Hash )] #[ethcall( - name = "getValidatorsStructsInNextEpoch", - abi = "getValidatorsStructsInNextEpoch(uint256)" + name = "isValidatorInCurrentEpoch", + abi = "isValidatorInCurrentEpoch(address)" )] - pub struct GetValidatorsStructsInNextEpochCall { - pub realm_id: ::ethers::core::types::U256, + pub struct IsValidatorInCurrentEpochCall { + pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `getVotingStatusToKickValidator` function with signature `getVotingStatusToKickValidator(uint256,uint256,address,address)` and selector `0x3e1c3693` + ///Container type for all input parameters for the `isValidatorInCurrentOrNextEpoch` function with signature `isValidatorInCurrentOrNextEpoch(address)` and selector `0x81b9beb7` #[derive( Clone, ::ethers::contract::EthCall, @@ -18140,16 +21323,13 @@ pub mod staking { Hash )] #[ethcall( - name = "getVotingStatusToKickValidator", - abi = "getVotingStatusToKickValidator(uint256,uint256,address,address)" + name = "isValidatorInCurrentOrNextEpoch", + abi = "isValidatorInCurrentOrNextEpoch(address)" )] - pub struct GetVotingStatusToKickValidatorCall { - pub realm_id: ::ethers::core::types::U256, - pub epoch_number: ::ethers::core::types::U256, - pub validator_to_be_kicked_staker_address: ::ethers::core::types::Address, - pub voter_staker_address: ::ethers::core::types::Address, + pub struct IsValidatorInCurrentOrNextEpochCall { + pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `globalConfig` function with signature `globalConfig()` and selector `0xa7c1abe0` + ///Container type for all input parameters for the `isValidatorInNextEpoch` function with signature `isValidatorInNextEpoch(address)` and selector `0xad0466a6` #[derive( Clone, ::ethers::contract::EthCall, @@ -18162,9 +21342,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "globalConfig", abi = "globalConfig()")] - pub struct GlobalConfigCall; - ///Container type for all input parameters for the `increaseRewardPool` function with signature `increaseRewardPool(uint256,uint256)` and selector `0x0c1ea985` + #[ethcall(name = "isValidatorInNextEpoch", abi = "isValidatorInNextEpoch(address)")] + pub struct IsValidatorInNextEpochCall { + pub staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `keySets` function with signature `keySets()` and selector `0xdce90405` #[derive( Clone, ::ethers::contract::EthCall, @@ -18177,12 +21359,9 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "increaseRewardPool", abi = "increaseRewardPool(uint256,uint256)")] - pub struct IncreaseRewardPoolCall { - pub realm_id: ::ethers::core::types::U256, - pub amount: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `increaseStakeRecordAmount` function with signature `increaseStakeRecordAmount(address,uint256,uint256)` and selector `0x61967297` + #[ethcall(name = "keySets", abi = "keySets()")] + pub struct KeySetsCall; + ///Container type for all input parameters for the `kickPenaltyPercentByReason` function with signature `kickPenaltyPercentByReason(uint256)` and selector `0x3e685266` #[derive( Clone, ::ethers::contract::EthCall, @@ -18196,15 +21375,13 @@ pub mod staking { Hash )] #[ethcall( - name = "increaseStakeRecordAmount", - abi = "increaseStakeRecordAmount(address,uint256,uint256)" + name = "kickPenaltyPercentByReason", + abi = "kickPenaltyPercentByReason(uint256)" )] - pub struct IncreaseStakeRecordAmountCall { - pub staker_address: ::ethers::core::types::Address, - pub stake_record_id: ::ethers::core::types::U256, - pub additional_amount: ::ethers::core::types::U256, + pub struct KickPenaltyPercentByReasonCall { + pub reason: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `increaseStakeRecordTimelock` function with signature `increaseStakeRecordTimelock(address,uint256,uint256)` and selector `0xc5427758` + ///Container type for all input parameters for the `kickValidatorInNextEpoch` function with signature `kickValidatorInNextEpoch(address,uint256,bytes)` and selector `0x865419e9` #[derive( Clone, ::ethers::contract::EthCall, @@ -18218,15 +21395,15 @@ pub mod staking { Hash )] #[ethcall( - name = "increaseStakeRecordTimelock", - abi = "increaseStakeRecordTimelock(address,uint256,uint256)" + name = "kickValidatorInNextEpoch", + abi = "kickValidatorInNextEpoch(address,uint256,bytes)" )] - pub struct IncreaseStakeRecordTimelockCall { - pub staker_address: ::ethers::core::types::Address, - pub stake_record_id: ::ethers::core::types::U256, - pub additional_time_lock: ::ethers::core::types::U256, + pub struct KickValidatorInNextEpochCall { + pub validator_to_kick_staker_address: ::ethers::core::types::Address, + pub reason: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, } - ///Container type for all input parameters for the `initializeRewardEpoch` function with signature `initializeRewardEpoch(address,uint256,bool)` and selector `0x9654c473` + ///Container type for all input parameters for the `litActionsConfig` function with signature `litActionsConfig(uint256)` and selector `0xe3dfd1f5` #[derive( Clone, ::ethers::contract::EthCall, @@ -18239,16 +21416,11 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "initializeRewardEpoch", - abi = "initializeRewardEpoch(address,uint256,bool)" - )] - pub struct InitializeRewardEpochCall { - pub staker_address: ::ethers::core::types::Address, - pub reward_epoch_number: ::ethers::core::types::U256, - pub is_initial: bool, + #[ethcall(name = "litActionsConfig", abi = "litActionsConfig(uint256)")] + pub struct LitActionsConfigCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `isActiveShadowValidator` function with signature `isActiveShadowValidator(uint256,address)` and selector `0x7e7ae34c` + ///Container type for all input parameters for the `lockValidatorsForNextEpoch` function with signature `lockValidatorsForNextEpoch(uint256)` and selector `0x45c1b1fb` #[derive( Clone, ::ethers::contract::EthCall, @@ -18262,14 +21434,13 @@ pub mod staking { Hash )] #[ethcall( - name = "isActiveShadowValidator", - abi = "isActiveShadowValidator(uint256,address)" + name = "lockValidatorsForNextEpoch", + abi = "lockValidatorsForNextEpoch(uint256)" )] - pub struct IsActiveShadowValidatorCall { + pub struct LockValidatorsForNextEpochCall { pub realm_id: ::ethers::core::types::U256, - pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `isActiveValidator` function with signature `isActiveValidator(uint256,address)` and selector `0xff347ae8` + ///Container type for all input parameters for the `maxStake` function with signature `maxStake()` and selector `0xea1b28e0` #[derive( Clone, ::ethers::contract::EthCall, @@ -18282,12 +21453,9 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "isActiveValidator", abi = "isActiveValidator(uint256,address)")] - pub struct IsActiveValidatorCall { - pub realm_id: ::ethers::core::types::U256, - pub staker_address: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `isActiveValidatorByNodeAddress` function with signature `isActiveValidatorByNodeAddress(uint256,address)` and selector `0x5064c127` + #[ethcall(name = "maxStake", abi = "maxStake()")] + pub struct MaxStakeCall; + ///Container type for all input parameters for the `maxTimeLock` function with signature `maxTimeLock()` and selector `0xe1cf73b9` #[derive( Clone, ::ethers::contract::EthCall, @@ -18300,15 +21468,9 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "isActiveValidatorByNodeAddress", - abi = "isActiveValidatorByNodeAddress(uint256,address)" - )] - pub struct IsActiveValidatorByNodeAddressCall { - pub realm_id: ::ethers::core::types::U256, - pub account: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `isActiveValidatorByNodeAddressForNextEpoch` function with signature `isActiveValidatorByNodeAddressForNextEpoch(uint256,address)` and selector `0xeb8f2f27` + #[ethcall(name = "maxTimeLock", abi = "maxTimeLock()")] + pub struct MaxTimeLockCall; + ///Container type for all input parameters for the `migrateStakeRecord` function with signature `migrateStakeRecord(address,uint256,address)` and selector `0x4048b256` #[derive( Clone, ::ethers::contract::EthCall, @@ -18322,14 +21484,15 @@ pub mod staking { Hash )] #[ethcall( - name = "isActiveValidatorByNodeAddressForNextEpoch", - abi = "isActiveValidatorByNodeAddressForNextEpoch(uint256,address)" + name = "migrateStakeRecord", + abi = "migrateStakeRecord(address,uint256,address)" )] - pub struct IsActiveValidatorByNodeAddressForNextEpochCall { - pub realm_id: ::ethers::core::types::U256, - pub node_address: ::ethers::core::types::Address, + pub struct MigrateStakeRecordCall { + pub operator_address_to_migrate_from: ::ethers::core::types::Address, + pub stake_record_id: ::ethers::core::types::U256, + pub operator_address_to_migrate_to: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `isActiveValidatorForNextEpoch` function with signature `isActiveValidatorForNextEpoch(uint256,address)` and selector `0x26fc6f9b` + ///Container type for all input parameters for the `minSelfStake` function with signature `minSelfStake()` and selector `0xc5f530af` #[derive( Clone, ::ethers::contract::EthCall, @@ -18342,15 +21505,9 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "isActiveValidatorForNextEpoch", - abi = "isActiveValidatorForNextEpoch(uint256,address)" - )] - pub struct IsActiveValidatorForNextEpochCall { - pub realm_id: ::ethers::core::types::U256, - pub staker_address: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `isApprovedForAll` function with signature `isApprovedForAll(address,address)` and selector `0xe985e9c5` + #[ethcall(name = "minSelfStake", abi = "minSelfStake()")] + pub struct MinSelfStakeCall; + ///Container type for all input parameters for the `minStake` function with signature `minStake()` and selector `0x375b3c0a` #[derive( Clone, ::ethers::contract::EthCall, @@ -18363,12 +21520,9 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "isApprovedForAll", abi = "isApprovedForAll(address,address)")] - pub struct IsApprovedForAllCall { - pub owner: ::ethers::core::types::Address, - pub operator: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `isReadyForNextEpoch` function with signature `isReadyForNextEpoch(uint256)` and selector `0x7fecc451` + #[ethcall(name = "minStake", abi = "minStake()")] + pub struct MinStakeCall; + ///Container type for all input parameters for the `minTimeLock` function with signature `minTimeLock()` and selector `0xd00a818f` #[derive( Clone, ::ethers::contract::EthCall, @@ -18381,11 +21535,9 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "isReadyForNextEpoch", abi = "isReadyForNextEpoch(uint256)")] - pub struct IsReadyForNextEpochCall { - pub realm_id: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `isRecentValidator` function with signature `isRecentValidator(address)` and selector `0x3c2ef732` + #[ethcall(name = "minTimeLock", abi = "minTimeLock()")] + pub struct MinTimeLockCall; + ///Container type for all input parameters for the `nextValidatorCountForConsensus` function with signature `nextValidatorCountForConsensus(uint256)` and selector `0xa8b89564` #[derive( Clone, ::ethers::contract::EthCall, @@ -18398,11 +21550,14 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "isRecentValidator", abi = "isRecentValidator(address)")] - pub struct IsRecentValidatorCall { - pub node_address: ::ethers::core::types::Address, + #[ethcall( + name = "nextValidatorCountForConsensus", + abi = "nextValidatorCountForConsensus(uint256)" + )] + pub struct NextValidatorCountForConsensusCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `isRecentValidator` function with signature `isRecentValidator(uint256,address)` and selector `0xc974c355` + ///Container type for all input parameters for the `nodeAddressToStakerAddress` function with signature `nodeAddressToStakerAddress(address)` and selector `0x5081f66f` #[derive( Clone, ::ethers::contract::EthCall, @@ -18415,12 +21570,14 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "isRecentValidator", abi = "isRecentValidator(uint256,address)")] - pub struct IsRecentValidatorWithRealmIdCall { - pub realm_id: ::ethers::core::types::U256, - pub staker_addresses: ::ethers::core::types::Address, + #[ethcall( + name = "nodeAddressToStakerAddress", + abi = "nodeAddressToStakerAddress(address)" + )] + pub struct NodeAddressToStakerAddressCall { + pub node_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `isValidatorBanned` function with signature `isValidatorBanned(address)` and selector `0xa92252ae` + ///Container type for all input parameters for the `nodeAddressToStakerAddressAcrossRealms` function with signature `nodeAddressToStakerAddressAcrossRealms(address)` and selector `0x86b01dd6` #[derive( Clone, ::ethers::contract::EthCall, @@ -18433,11 +21590,14 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "isValidatorBanned", abi = "isValidatorBanned(address)")] - pub struct IsValidatorBannedCall { - pub validator: ::ethers::core::types::Address, + #[ethcall( + name = "nodeAddressToStakerAddressAcrossRealms", + abi = "nodeAddressToStakerAddressAcrossRealms(address)" + )] + pub struct NodeAddressToStakerAddressAcrossRealmsCall { + pub node_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `isValidatorInCurrentEpoch` function with signature `isValidatorInCurrentEpoch(address)` and selector `0xdf8a171f` + ///Container type for all input parameters for the `numRealms` function with signature `numRealms()` and selector `0xfc14e3b9` #[derive( Clone, ::ethers::contract::EthCall, @@ -18450,14 +21610,9 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "isValidatorInCurrentEpoch", - abi = "isValidatorInCurrentEpoch(address)" - )] - pub struct IsValidatorInCurrentEpochCall { - pub staker_address: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `isValidatorInCurrentOrNextEpoch` function with signature `isValidatorInCurrentOrNextEpoch(address)` and selector `0x81b9beb7` + #[ethcall(name = "numRealms", abi = "numRealms()")] + pub struct NumRealmsCall; + ///Container type for all input parameters for the `operatorAddressToStakerAddress` function with signature `operatorAddressToStakerAddress(address)` and selector `0xab8ccfbe` #[derive( Clone, ::ethers::contract::EthCall, @@ -18471,13 +21626,13 @@ pub mod staking { Hash )] #[ethcall( - name = "isValidatorInCurrentOrNextEpoch", - abi = "isValidatorInCurrentOrNextEpoch(address)" + name = "operatorAddressToStakerAddress", + abi = "operatorAddressToStakerAddress(address)" )] - pub struct IsValidatorInCurrentOrNextEpochCall { - pub staker_address: ::ethers::core::types::Address, + pub struct OperatorAddressToStakerAddressCall { + pub operator_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `isValidatorInNextEpoch` function with signature `isValidatorInNextEpoch(address)` and selector `0xad0466a6` + ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` #[derive( Clone, ::ethers::contract::EthCall, @@ -18490,11 +21645,9 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "isValidatorInNextEpoch", abi = "isValidatorInNextEpoch(address)")] - pub struct IsValidatorInNextEpochCall { - pub staker_address: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `keySets` function with signature `keySets()` and selector `0xdce90405` + #[ethcall(name = "owner", abi = "owner()")] + pub struct OwnerCall; + ///Container type for all input parameters for the `ownerOf` function with signature `ownerOf(uint256)` and selector `0x6352211e` #[derive( Clone, ::ethers::contract::EthCall, @@ -18507,9 +21660,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "keySets", abi = "keySets()")] - pub struct KeySetsCall; - ///Container type for all input parameters for the `kickPenaltyPercentByReason` function with signature `kickPenaltyPercentByReason(uint256)` and selector `0x3e685266` + #[ethcall(name = "ownerOf", abi = "ownerOf(uint256)")] + pub struct OwnerOfCall { + pub token_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `ownershipChange` function with signature `ownershipChange(uint256)` and selector `0x23857d51` #[derive( Clone, ::ethers::contract::EthCall, @@ -18522,14 +21677,11 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "kickPenaltyPercentByReason", - abi = "kickPenaltyPercentByReason(uint256)" - )] - pub struct KickPenaltyPercentByReasonCall { - pub reason: ::ethers::core::types::U256, + #[ethcall(name = "ownershipChange", abi = "ownershipChange(uint256)")] + pub struct OwnershipChangeCall { + pub token_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `kickValidatorInNextEpoch` function with signature `kickValidatorInNextEpoch(address,uint256,bytes)` and selector `0x865419e9` + ///Container type for all input parameters for the `permittedRealmsForValidator` function with signature `permittedRealmsForValidator(address)` and selector `0xe718ff4c` #[derive( Clone, ::ethers::contract::EthCall, @@ -18543,15 +21695,13 @@ pub mod staking { Hash )] #[ethcall( - name = "kickValidatorInNextEpoch", - abi = "kickValidatorInNextEpoch(address,uint256,bytes)" + name = "permittedRealmsForValidator", + abi = "permittedRealmsForValidator(address)" )] - pub struct KickValidatorInNextEpochCall { - pub validator_to_kick_staker_address: ::ethers::core::types::Address, - pub reason: ::ethers::core::types::U256, - pub data: ::ethers::core::types::Bytes, + pub struct PermittedRealmsForValidatorCall { + pub validator: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `litActionsConfig` function with signature `litActionsConfig(uint256)` and selector `0xe3dfd1f5` + ///Container type for all input parameters for the `permittedValidators` function with signature `permittedValidators(uint256)` and selector `0x58488c31` #[derive( Clone, ::ethers::contract::EthCall, @@ -18564,11 +21714,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "litActionsConfig", abi = "litActionsConfig(uint256)")] - pub struct LitActionsConfigCall { + #[ethcall(name = "permittedValidators", abi = "permittedValidators(uint256)")] + pub struct PermittedValidatorsCall { pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `lockValidatorsForNextEpoch` function with signature `lockValidatorsForNextEpoch(uint256)` and selector `0x45c1b1fb` + ///Container type for all input parameters for the `pow` function with signature `pow(uint256,uint256)` and selector `0x2e4c697f` #[derive( Clone, ::ethers::contract::EthCall, @@ -18581,14 +21731,12 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "lockValidatorsForNextEpoch", - abi = "lockValidatorsForNextEpoch(uint256)" - )] - pub struct LockValidatorsForNextEpochCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall(name = "pow", abi = "pow(uint256,uint256)")] + pub struct PowCall { + pub base: ::ethers::core::types::U256, + pub exponent: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `maxStake` function with signature `maxStake()` and selector `0xea1b28e0` + ///Container type for all input parameters for the `readyForNextEpoch` function with signature `readyForNextEpoch(uint256,address)` and selector `0xf2c5b908` #[derive( Clone, ::ethers::contract::EthCall, @@ -18601,9 +21749,12 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "maxStake", abi = "maxStake()")] - pub struct MaxStakeCall; - ///Container type for all input parameters for the `maxTimeLock` function with signature `maxTimeLock()` and selector `0xe1cf73b9` + #[ethcall(name = "readyForNextEpoch", abi = "readyForNextEpoch(uint256,address)")] + pub struct ReadyForNextEpochCall { + pub realm_id: ::ethers::core::types::U256, + pub staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `realmConfig` function with signature `realmConfig(uint256)` and selector `0xe56cfb79` #[derive( Clone, ::ethers::contract::EthCall, @@ -18616,9 +21767,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "maxTimeLock", abi = "maxTimeLock()")] - pub struct MaxTimeLockCall; - ///Container type for all input parameters for the `migrateStakeRecord` function with signature `migrateStakeRecord(address,uint256,address)` and selector `0x4048b256` + #[ethcall(name = "realmConfig", abi = "realmConfig(uint256)")] + pub struct RealmConfigCall { + pub realm_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `registerAttestedWallet` function with signature `registerAttestedWallet(address,address,bytes,uint256,uint256)` and selector `0x4aea5542` #[derive( Clone, ::ethers::contract::EthCall, @@ -18632,15 +21785,17 @@ pub mod staking { Hash )] #[ethcall( - name = "migrateStakeRecord", - abi = "migrateStakeRecord(address,uint256,address)" + name = "registerAttestedWallet", + abi = "registerAttestedWallet(address,address,bytes,uint256,uint256)" )] - pub struct MigrateStakeRecordCall { - pub operator_address_to_migrate_from: ::ethers::core::types::Address, - pub stake_record_id: ::ethers::core::types::U256, - pub operator_address_to_migrate_to: ::ethers::core::types::Address, + pub struct RegisterAttestedWalletCall { + pub staker_address: ::ethers::core::types::Address, + pub attested_address: ::ethers::core::types::Address, + pub attested_pub_key: ::ethers::core::types::Bytes, + pub sender_pub_key: ::ethers::core::types::U256, + pub receiver_pub_key: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `minSelfStake` function with signature `minSelfStake()` and selector `0xc5f530af` + ///Container type for all input parameters for the `removeRealm` function with signature `removeRealm(uint256)` and selector `0xd2baca55` #[derive( Clone, ::ethers::contract::EthCall, @@ -18653,9 +21808,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "minSelfStake", abi = "minSelfStake()")] - pub struct MinSelfStakeCall; - ///Container type for all input parameters for the `minStake` function with signature `minStake()` and selector `0x375b3c0a` + #[ethcall(name = "removeRealm", abi = "removeRealm(uint256)")] + pub struct RemoveRealmCall { + pub realm_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `requestToJoin` function with signature `requestToJoin(uint256)` and selector `0x84022767` #[derive( Clone, ::ethers::contract::EthCall, @@ -18668,9 +21825,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "minStake", abi = "minStake()")] - pub struct MinStakeCall; - ///Container type for all input parameters for the `minTimeLock` function with signature `minTimeLock()` and selector `0xd00a818f` + #[ethcall(name = "requestToJoin", abi = "requestToJoin(uint256)")] + pub struct RequestToJoinCall { + pub realm_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `requestToJoinAsAdmin` function with signature `requestToJoinAsAdmin(uint256,address)` and selector `0xca005066` #[derive( Clone, ::ethers::contract::EthCall, @@ -18683,9 +21842,15 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "minTimeLock", abi = "minTimeLock()")] - pub struct MinTimeLockCall; - ///Container type for all input parameters for the `nextValidatorCountForConsensus` function with signature `nextValidatorCountForConsensus(uint256)` and selector `0xa8b89564` + #[ethcall( + name = "requestToJoinAsAdmin", + abi = "requestToJoinAsAdmin(uint256,address)" + )] + pub struct RequestToJoinAsAdminCall { + pub realm_id: ::ethers::core::types::U256, + pub staker_address: ::ethers::core::types::Address, + } + ///Container type for all input parameters for the `requestToJoinAsForShadowSplicing` function with signature `requestToJoinAsForShadowSplicing(uint256,address)` and selector `0x9a1dc1b5` #[derive( Clone, ::ethers::contract::EthCall, @@ -18699,13 +21864,14 @@ pub mod staking { Hash )] #[ethcall( - name = "nextValidatorCountForConsensus", - abi = "nextValidatorCountForConsensus(uint256)" + name = "requestToJoinAsForShadowSplicing", + abi = "requestToJoinAsForShadowSplicing(uint256,address)" )] - pub struct NextValidatorCountForConsensusCall { + pub struct RequestToJoinAsForShadowSplicingCall { pub realm_id: ::ethers::core::types::U256, + pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `nodeAddressToStakerAddress` function with signature `nodeAddressToStakerAddress(address)` and selector `0x5081f66f` + ///Container type for all input parameters for the `requestToJoinAsNode` function with signature `requestToJoinAsNode(uint256,address)` and selector `0x5b7204fa` #[derive( Clone, ::ethers::contract::EthCall, @@ -18719,13 +21885,14 @@ pub mod staking { Hash )] #[ethcall( - name = "nodeAddressToStakerAddress", - abi = "nodeAddressToStakerAddress(address)" + name = "requestToJoinAsNode", + abi = "requestToJoinAsNode(uint256,address)" )] - pub struct NodeAddressToStakerAddressCall { - pub node_address: ::ethers::core::types::Address, + pub struct RequestToJoinAsNodeCall { + pub realm_id: ::ethers::core::types::U256, + pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `nodeAddressToStakerAddressAcrossRealms` function with signature `nodeAddressToStakerAddressAcrossRealms(address)` and selector `0x86b01dd6` + ///Container type for all input parameters for the `requestToLeave` function with signature `requestToLeave()` and selector `0xac2f8afe` #[derive( Clone, ::ethers::contract::EthCall, @@ -18738,14 +21905,9 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "nodeAddressToStakerAddressAcrossRealms", - abi = "nodeAddressToStakerAddressAcrossRealms(address)" - )] - pub struct NodeAddressToStakerAddressAcrossRealmsCall { - pub node_address: ::ethers::core::types::Address, - } - ///Container type for all input parameters for the `numRealms` function with signature `numRealms()` and selector `0xfc14e3b9` + #[ethcall(name = "requestToLeave", abi = "requestToLeave()")] + pub struct RequestToLeaveCall; + ///Container type for all input parameters for the `requestToLeaveAsNode` function with signature `requestToLeaveAsNode(uint256)` and selector `0xc6f04cbb` #[derive( Clone, ::ethers::contract::EthCall, @@ -18758,9 +21920,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "numRealms", abi = "numRealms()")] - pub struct NumRealmsCall; - ///Container type for all input parameters for the `operatorAddressToStakerAddress` function with signature `operatorAddressToStakerAddress(address)` and selector `0xab8ccfbe` + #[ethcall(name = "requestToLeaveAsNode", abi = "requestToLeaveAsNode(uint256)")] + pub struct RequestToLeaveAsNodeCall { + pub realm_id: ::ethers::core::types::U256, + } + ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256)` and selector `0x42842e0e` #[derive( Clone, ::ethers::contract::EthCall, @@ -18774,13 +21938,15 @@ pub mod staking { Hash )] #[ethcall( - name = "operatorAddressToStakerAddress", - abi = "operatorAddressToStakerAddress(address)" + name = "safeTransferFrom", + abi = "safeTransferFrom(address,address,uint256)" )] - pub struct OperatorAddressToStakerAddressCall { - pub operator_address: ::ethers::core::types::Address, + pub struct SafeTransferFromCall { + pub from: ::ethers::core::types::Address, + pub to: ::ethers::core::types::Address, + pub token_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `owner` function with signature `owner()` and selector `0x8da5cb5b` + ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256,bytes)` and selector `0xb88d4fde` #[derive( Clone, ::ethers::contract::EthCall, @@ -18793,9 +21959,17 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "owner", abi = "owner()")] - pub struct OwnerCall; - ///Container type for all input parameters for the `ownerOf` function with signature `ownerOf(uint256)` and selector `0x6352211e` + #[ethcall( + name = "safeTransferFrom", + abi = "safeTransferFrom(address,address,uint256,bytes)" + )] + pub struct SafeTransferFromWithFromAndToAndDataCall { + pub from: ::ethers::core::types::Address, + pub to: ::ethers::core::types::Address, + pub token_id: ::ethers::core::types::U256, + pub data: ::ethers::core::types::Bytes, + } + ///Container type for all input parameters for the `selfStakeBalanceOf` function with signature `selfStakeBalanceOf(address)` and selector `0xeddf837a` #[derive( Clone, ::ethers::contract::EthCall, @@ -18808,11 +21982,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "ownerOf", abi = "ownerOf(uint256)")] - pub struct OwnerOfCall { - pub token_id: ::ethers::core::types::U256, + #[ethcall(name = "selfStakeBalanceOf", abi = "selfStakeBalanceOf(address)")] + pub struct SelfStakeBalanceOfCall { + pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `ownershipChange` function with signature `ownershipChange(uint256)` and selector `0x23857d51` + ///Container type for all input parameters for the `setApprovalForAll` function with signature `setApprovalForAll(address,bool)` and selector `0xa22cb465` #[derive( Clone, ::ethers::contract::EthCall, @@ -18825,11 +21999,12 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "ownershipChange", abi = "ownershipChange(uint256)")] - pub struct OwnershipChangeCall { - pub token_id: ::ethers::core::types::U256, + #[ethcall(name = "setApprovalForAll", abi = "setApprovalForAll(address,bool)")] + pub struct SetApprovalForAllCall { + pub operator: ::ethers::core::types::Address, + pub approved: bool, } - ///Container type for all input parameters for the `permittedRealmsForValidator` function with signature `permittedRealmsForValidator(address)` and selector `0xe718ff4c` + ///Container type for all input parameters for the `setComplaintConfig` function with signature `setComplaintConfig(uint256,(uint256,uint256,uint256,uint256))` and selector `0x440e8d22` #[derive( Clone, ::ethers::contract::EthCall, @@ -18843,13 +22018,29 @@ pub mod staking { Hash )] #[ethcall( - name = "permittedRealmsForValidator", - abi = "permittedRealmsForValidator(address)" + name = "setComplaintConfig", + abi = "setComplaintConfig(uint256,(uint256,uint256,uint256,uint256))" )] - pub struct PermittedRealmsForValidatorCall { - pub validator: ::ethers::core::types::Address, + pub struct SetComplaintConfigCall { + pub reason: ::ethers::core::types::U256, + pub config: ComplaintConfig, } - ///Container type for all input parameters for the `permittedValidators` function with signature `permittedValidators(uint256)` and selector `0x58488c31` + ///Container type for all input parameters for the `setConfig` function with signature `setConfig((uint256,uint256[],uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))` and selector `0x077b0d40` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + serde::Serialize, + serde::Deserialize, + )] + #[ethcall( + name = "setConfig", + abi = "setConfig((uint256,uint256[],uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))" + )] + pub struct SetConfigCall { + pub new_config: GlobalConfig, + } + ///Container type for all input parameters for the `setContractResolver` function with signature `setContractResolver(address)` and selector `0xf95d71b1` #[derive( Clone, ::ethers::contract::EthCall, @@ -18862,11 +22053,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "permittedValidators", abi = "permittedValidators(uint256)")] - pub struct PermittedValidatorsCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall(name = "setContractResolver", abi = "setContractResolver(address)")] + pub struct SetContractResolverCall { + pub new_resolver_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `pow` function with signature `pow(uint256,uint256)` and selector `0x2e4c697f` + ///Container type for all input parameters for the `setDemeritRejoinThreshold` function with signature `setDemeritRejoinThreshold(uint256)` and selector `0x2531431b` #[derive( Clone, ::ethers::contract::EthCall, @@ -18879,12 +22070,14 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "pow", abi = "pow(uint256,uint256)")] - pub struct PowCall { - pub base: ::ethers::core::types::U256, - pub exponent: ::ethers::core::types::U256, + #[ethcall( + name = "setDemeritRejoinThreshold", + abi = "setDemeritRejoinThreshold(uint256)" + )] + pub struct SetDemeritRejoinThresholdCall { + pub new_threshold: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `readyForNextEpoch` function with signature `readyForNextEpoch(uint256,address)` and selector `0xf2c5b908` + ///Container type for all input parameters for the `setDevopsAdmin` function with signature `setDevopsAdmin(address)` and selector `0xcf7d1e87` #[derive( Clone, ::ethers::contract::EthCall, @@ -18897,12 +22090,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "readyForNextEpoch", abi = "readyForNextEpoch(uint256,address)")] - pub struct ReadyForNextEpochCall { - pub realm_id: ::ethers::core::types::U256, - pub staker_address: ::ethers::core::types::Address, + #[ethcall(name = "setDevopsAdmin", abi = "setDevopsAdmin(address)")] + pub struct SetDevopsAdminCall { + pub new_devops_admin: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `realmConfig` function with signature `realmConfig(uint256)` and selector `0xe56cfb79` + ///Container type for all input parameters for the `setEpochEndTime` function with signature `setEpochEndTime(uint256,uint256)` and selector `0x5a7e6c22` #[derive( Clone, ::ethers::contract::EthCall, @@ -18915,11 +22107,12 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "realmConfig", abi = "realmConfig(uint256)")] - pub struct RealmConfigCall { + #[ethcall(name = "setEpochEndTime", abi = "setEpochEndTime(uint256,uint256)")] + pub struct SetEpochEndTimeCall { pub realm_id: ::ethers::core::types::U256, + pub new_epoch_end_time: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `registerAttestedWallet` function with signature `registerAttestedWallet(address,address,bytes,uint256,uint256)` and selector `0x4aea5542` + ///Container type for all input parameters for the `setEpochLength` function with signature `setEpochLength(uint256,uint256)` and selector `0xeb57bafb` #[derive( Clone, ::ethers::contract::EthCall, @@ -18932,18 +22125,12 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "registerAttestedWallet", - abi = "registerAttestedWallet(address,address,bytes,uint256,uint256)" - )] - pub struct RegisterAttestedWalletCall { - pub staker_address: ::ethers::core::types::Address, - pub attested_address: ::ethers::core::types::Address, - pub attested_pub_key: ::ethers::core::types::Bytes, - pub sender_pub_key: ::ethers::core::types::U256, - pub receiver_pub_key: ::ethers::core::types::U256, + #[ethcall(name = "setEpochLength", abi = "setEpochLength(uint256,uint256)")] + pub struct SetEpochLengthCall { + pub realm_id: ::ethers::core::types::U256, + pub new_epoch_length: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `removeRealm` function with signature `removeRealm(uint256)` and selector `0xd2baca55` + ///Container type for all input parameters for the `setEpochState` function with signature `setEpochState(uint256,uint8)` and selector `0x7a802454` #[derive( Clone, ::ethers::contract::EthCall, @@ -18956,11 +22143,12 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "removeRealm", abi = "removeRealm(uint256)")] - pub struct RemoveRealmCall { + #[ethcall(name = "setEpochState", abi = "setEpochState(uint256,uint8)")] + pub struct SetEpochStateCall { pub realm_id: ::ethers::core::types::U256, + pub new_state: u8, } - ///Container type for all input parameters for the `requestToJoin` function with signature `requestToJoin(uint256)` and selector `0x84022767` + ///Container type for all input parameters for the `setEpochTimeout` function with signature `setEpochTimeout(uint256,uint256)` and selector `0x0c9d5399` #[derive( Clone, ::ethers::contract::EthCall, @@ -18973,11 +22161,12 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "requestToJoin", abi = "requestToJoin(uint256)")] - pub struct RequestToJoinCall { + #[ethcall(name = "setEpochTimeout", abi = "setEpochTimeout(uint256,uint256)")] + pub struct SetEpochTimeoutCall { pub realm_id: ::ethers::core::types::U256, + pub new_epoch_timeout: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `requestToJoinAsAdmin` function with signature `requestToJoinAsAdmin(uint256,address)` and selector `0xca005066` + ///Container type for all input parameters for the `setIpPortNodeAddress` function with signature `setIpPortNodeAddress(uint32,uint128,uint32,address)` and selector `0x2c80b549` #[derive( Clone, ::ethers::contract::EthCall, @@ -18991,14 +22180,16 @@ pub mod staking { Hash )] #[ethcall( - name = "requestToJoinAsAdmin", - abi = "requestToJoinAsAdmin(uint256,address)" + name = "setIpPortNodeAddress", + abi = "setIpPortNodeAddress(uint32,uint128,uint32,address)" )] - pub struct RequestToJoinAsAdminCall { - pub realm_id: ::ethers::core::types::U256, - pub staker_address: ::ethers::core::types::Address, + pub struct SetIpPortNodeAddressCall { + pub ip: u32, + pub ipv_6: u128, + pub port: u32, + pub operator_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `requestToJoinAsForShadowSplicing` function with signature `requestToJoinAsForShadowSplicing(uint256,address)` and selector `0x9a1dc1b5` + ///Container type for all input parameters for the `setKeySet` function with signature `setKeySet((uint32,uint32,bool,string,string,uint256[],uint256[],uint256[],address[]))` and selector `0x74d0be87` #[derive( Clone, ::ethers::contract::EthCall, @@ -19012,14 +22203,13 @@ pub mod staking { Hash )] #[ethcall( - name = "requestToJoinAsForShadowSplicing", - abi = "requestToJoinAsForShadowSplicing(uint256,address)" + name = "setKeySet", + abi = "setKeySet((uint32,uint32,bool,string,string,uint256[],uint256[],uint256[],address[]))" )] - pub struct RequestToJoinAsForShadowSplicingCall { - pub realm_id: ::ethers::core::types::U256, - pub staker_address: ::ethers::core::types::Address, + pub struct SetKeySetCall { + pub update: KeySetConfig, } - ///Container type for all input parameters for the `requestToJoinAsNode` function with signature `requestToJoinAsNode(uint256,address)` and selector `0x5b7204fa` + ///Container type for all input parameters for the `setLitActionConfig` function with signature `setLitActionConfig(uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool))` and selector `0xe7d1f9a1` #[derive( Clone, ::ethers::contract::EthCall, @@ -19033,14 +22223,14 @@ pub mod staking { Hash )] #[ethcall( - name = "requestToJoinAsNode", - abi = "requestToJoinAsNode(uint256,address)" + name = "setLitActionConfig", + abi = "setLitActionConfig(uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool))" )] - pub struct RequestToJoinAsNodeCall { + pub struct SetLitActionConfigCall { pub realm_id: ::ethers::core::types::U256, - pub staker_address: ::ethers::core::types::Address, + pub new_config: LitActionConfig, } - ///Container type for all input parameters for the `requestToLeave` function with signature `requestToLeave()` and selector `0xac2f8afe` + ///Container type for all input parameters for the `setMaxVersion` function with signature `setMaxVersion(uint256,(uint256,uint256,uint256))` and selector `0xb34b251d` #[derive( Clone, ::ethers::contract::EthCall, @@ -19053,9 +22243,15 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "requestToLeave", abi = "requestToLeave()")] - pub struct RequestToLeaveCall; - ///Container type for all input parameters for the `requestToLeaveAsNode` function with signature `requestToLeaveAsNode(uint256)` and selector `0xc6f04cbb` + #[ethcall( + name = "setMaxVersion", + abi = "setMaxVersion(uint256,(uint256,uint256,uint256))" + )] + pub struct SetMaxVersionCall { + pub realm_id: ::ethers::core::types::U256, + pub version: Version, + } + ///Container type for all input parameters for the `setMinVersion` function with signature `setMinVersion(uint256,(uint256,uint256,uint256))` and selector `0x0c26c77b` #[derive( Clone, ::ethers::contract::EthCall, @@ -19068,11 +22264,15 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "requestToLeaveAsNode", abi = "requestToLeaveAsNode(uint256)")] - pub struct RequestToLeaveAsNodeCall { + #[ethcall( + name = "setMinVersion", + abi = "setMinVersion(uint256,(uint256,uint256,uint256))" + )] + pub struct SetMinVersionCall { pub realm_id: ::ethers::core::types::U256, + pub version: Version, } - ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256)` and selector `0x42842e0e` + ///Container type for all input parameters for the `setPendingRejoinTimeout` function with signature `setPendingRejoinTimeout(uint256)` and selector `0x2b156e7d` #[derive( Clone, ::ethers::contract::EthCall, @@ -19086,15 +22286,13 @@ pub mod staking { Hash )] #[ethcall( - name = "safeTransferFrom", - abi = "safeTransferFrom(address,address,uint256)" + name = "setPendingRejoinTimeout", + abi = "setPendingRejoinTimeout(uint256)" )] - pub struct SafeTransferFromCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub token_id: ::ethers::core::types::U256, + pub struct SetPendingRejoinTimeoutCall { + pub new_timeout: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `safeTransferFrom` function with signature `safeTransferFrom(address,address,uint256,bytes)` and selector `0xb88d4fde` + ///Container type for all input parameters for the `setPermittedValidators` function with signature `setPermittedValidators(uint256,address[])` and selector `0x8354ae59` #[derive( Clone, ::ethers::contract::EthCall, @@ -19108,16 +22306,14 @@ pub mod staking { Hash )] #[ethcall( - name = "safeTransferFrom", - abi = "safeTransferFrom(address,address,uint256,bytes)" + name = "setPermittedValidators", + abi = "setPermittedValidators(uint256,address[])" )] - pub struct SafeTransferFromWithFromAndToAndDataCall { - pub from: ::ethers::core::types::Address, - pub to: ::ethers::core::types::Address, - pub token_id: ::ethers::core::types::U256, - pub data: ::ethers::core::types::Bytes, + pub struct SetPermittedValidatorsCall { + pub realm_id: ::ethers::core::types::U256, + pub validators_to_set: ::std::vec::Vec<::ethers::core::types::Address>, } - ///Container type for all input parameters for the `setApprovalForAll` function with signature `setApprovalForAll(address,bool)` and selector `0xa22cb465` + ///Container type for all input parameters for the `setPermittedValidatorsOn` function with signature `setPermittedValidatorsOn(uint256,bool)` and selector `0x74a22c51` #[derive( Clone, ::ethers::contract::EthCall, @@ -19130,12 +22326,15 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "setApprovalForAll", abi = "setApprovalForAll(address,bool)")] - pub struct SetApprovalForAllCall { - pub operator: ::ethers::core::types::Address, - pub approved: bool, + #[ethcall( + name = "setPermittedValidatorsOn", + abi = "setPermittedValidatorsOn(uint256,bool)" + )] + pub struct SetPermittedValidatorsOnCall { + pub realm_id: ::ethers::core::types::U256, + pub permitted_validators_on: bool, } - ///Container type for all input parameters for the `setComplaintConfig` function with signature `setComplaintConfig(uint256,(uint256,uint256,uint256,uint256))` and selector `0x440e8d22` + ///Container type for all input parameters for the `setRealmConfig` function with signature `setRealmConfig(uint256,(uint256,uint256,uint256,uint256,uint256,bool,uint256,bool))` and selector `0x7d35690f` #[derive( Clone, ::ethers::contract::EthCall, @@ -19149,29 +22348,34 @@ pub mod staking { Hash )] #[ethcall( - name = "setComplaintConfig", - abi = "setComplaintConfig(uint256,(uint256,uint256,uint256,uint256))" + name = "setRealmConfig", + abi = "setRealmConfig(uint256,(uint256,uint256,uint256,uint256,uint256,bool,uint256,bool))" )] - pub struct SetComplaintConfigCall { - pub reason: ::ethers::core::types::U256, - pub config: ComplaintConfig, + pub struct SetRealmConfigCall { + pub realm_id: ::ethers::core::types::U256, + pub new_config: RealmConfig, } - ///Container type for all input parameters for the `setConfig` function with signature `setConfig((uint256,uint256[],uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))` and selector `0x077b0d40` + ///Container type for all input parameters for the `setTokenTotalSupplyStandIn` function with signature `setTokenTotalSupplyStandIn(uint256)` and selector `0xe941a733` #[derive( Clone, ::ethers::contract::EthCall, ::ethers::contract::EthDisplay, serde::Serialize, serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash )] #[ethcall( - name = "setConfig", - abi = "setConfig((uint256,uint256[],uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))" + name = "setTokenTotalSupplyStandIn", + abi = "setTokenTotalSupplyStandIn(uint256)" )] - pub struct SetConfigCall { - pub new_config: GlobalConfig, + pub struct SetTokenTotalSupplyStandInCall { + pub new_total_supply: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `setContractResolver` function with signature `setContractResolver(address)` and selector `0xf95d71b1` + ///Container type for all input parameters for the `setTrustedForwarder` function with signature `setTrustedForwarder(address)` and selector `0xda742228` #[derive( Clone, ::ethers::contract::EthCall, @@ -19184,11 +22388,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "setContractResolver", abi = "setContractResolver(address)")] - pub struct SetContractResolverCall { - pub new_resolver_address: ::ethers::core::types::Address, + #[ethcall(name = "setTrustedForwarder", abi = "setTrustedForwarder(address)")] + pub struct SetTrustedForwarderCall { + pub forwarder: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `setDemeritRejoinThreshold` function with signature `setDemeritRejoinThreshold(uint256)` and selector `0x2531431b` + ///Container type for all input parameters for the `setUp` function with signature `setUp()` and selector `0x0a9254e4` #[derive( Clone, ::ethers::contract::EthCall, @@ -19201,14 +22405,9 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "setDemeritRejoinThreshold", - abi = "setDemeritRejoinThreshold(uint256)" - )] - pub struct SetDemeritRejoinThresholdCall { - pub new_threshold: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `setDevopsAdmin` function with signature `setDevopsAdmin(address)` and selector `0xcf7d1e87` + #[ethcall(name = "setUp", abi = "setUp()")] + pub struct SetUpCall; + ///Container type for all input parameters for the `setValidatorCommissionRate` function with signature `setValidatorCommissionRate(uint256)` and selector `0x7149ab58` #[derive( Clone, ::ethers::contract::EthCall, @@ -19221,11 +22420,14 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "setDevopsAdmin", abi = "setDevopsAdmin(address)")] - pub struct SetDevopsAdminCall { - pub new_devops_admin: ::ethers::core::types::Address, + #[ethcall( + name = "setValidatorCommissionRate", + abi = "setValidatorCommissionRate(uint256)" + )] + pub struct SetValidatorCommissionRateCall { + pub rate: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `setEpochEndTime` function with signature `setEpochEndTime(uint256,uint256)` and selector `0x5a7e6c22` + ///Container type for all input parameters for the `shouldKickValidator` function with signature `shouldKickValidator(uint256,address)` and selector `0x1e966b97` #[derive( Clone, ::ethers::contract::EthCall, @@ -19238,12 +22440,15 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "setEpochEndTime", abi = "setEpochEndTime(uint256,uint256)")] - pub struct SetEpochEndTimeCall { + #[ethcall( + name = "shouldKickValidator", + abi = "shouldKickValidator(uint256,address)" + )] + pub struct ShouldKickValidatorCall { pub realm_id: ::ethers::core::types::U256, - pub new_epoch_end_time: ::ethers::core::types::U256, + pub staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `setEpochLength` function with signature `setEpochLength(uint256,uint256)` and selector `0xeb57bafb` + ///Container type for all input parameters for the `signalReadyForNextEpoch` function with signature `signalReadyForNextEpoch(uint256,uint256)` and selector `0x9a25bdee` #[derive( Clone, ::ethers::contract::EthCall, @@ -19256,12 +22461,15 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "setEpochLength", abi = "setEpochLength(uint256,uint256)")] - pub struct SetEpochLengthCall { + #[ethcall( + name = "signalReadyForNextEpoch", + abi = "signalReadyForNextEpoch(uint256,uint256)" + )] + pub struct SignalReadyForNextEpochCall { pub realm_id: ::ethers::core::types::U256, - pub new_epoch_length: ::ethers::core::types::U256, + pub epoch_number: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `setEpochState` function with signature `setEpochState(uint256,uint8)` and selector `0x7a802454` + ///Container type for all input parameters for the `splitStakeRecord` function with signature `splitStakeRecord(address,uint256,uint256)` and selector `0xf69ccb92` #[derive( Clone, ::ethers::contract::EthCall, @@ -19274,12 +22482,16 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "setEpochState", abi = "setEpochState(uint256,uint8)")] - pub struct SetEpochStateCall { - pub realm_id: ::ethers::core::types::U256, - pub new_state: u8, + #[ethcall( + name = "splitStakeRecord", + abi = "splitStakeRecord(address,uint256,uint256)" + )] + pub struct SplitStakeRecordCall { + pub staker_address: ::ethers::core::types::Address, + pub stake_record_id: ::ethers::core::types::U256, + pub ratio: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `setEpochTimeout` function with signature `setEpochTimeout(uint256,uint256)` and selector `0x0c9d5399` + ///Container type for all input parameters for the `stake` function with signature `stake(uint256,uint256,address)` and selector `0x7628a37d` #[derive( Clone, ::ethers::contract::EthCall, @@ -19292,12 +22504,13 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "setEpochTimeout", abi = "setEpochTimeout(uint256,uint256)")] - pub struct SetEpochTimeoutCall { - pub realm_id: ::ethers::core::types::U256, - pub new_epoch_timeout: ::ethers::core::types::U256, + #[ethcall(name = "stake", abi = "stake(uint256,uint256,address)")] + pub struct StakeCall { + pub amount: ::ethers::core::types::U256, + pub time_lock: ::ethers::core::types::U256, + pub operator_staker_address: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `setIpPortNodeAddress` function with signature `setIpPortNodeAddress(uint32,uint128,uint32,address)` and selector `0x2c80b549` + ///Container type for all input parameters for the `stakerToValidatorsTheyStakedTo` function with signature `stakerToValidatorsTheyStakedTo(address)` and selector `0x6817d36e` #[derive( Clone, ::ethers::contract::EthCall, @@ -19311,16 +22524,13 @@ pub mod staking { Hash )] #[ethcall( - name = "setIpPortNodeAddress", - abi = "setIpPortNodeAddress(uint32,uint128,uint32,address)" + name = "stakerToValidatorsTheyStakedTo", + abi = "stakerToValidatorsTheyStakedTo(address)" )] - pub struct SetIpPortNodeAddressCall { - pub ip: u32, - pub ipv_6: u128, - pub port: u32, - pub operator_address: ::ethers::core::types::Address, + pub struct StakerToValidatorsTheyStakedToCall { + pub staker: ::ethers::core::types::Address, } - ///Container type for all input parameters for the `setKeySet` function with signature `setKeySet((uint32,uint32,bool,string,string,uint256[],uint256[],uint256[],address[]))` and selector `0x74d0be87` + ///Container type for all input parameters for the `state` function with signature `state(uint256)` and selector `0x3e4f49e6` #[derive( Clone, ::ethers::contract::EthCall, @@ -19333,14 +22543,11 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "setKeySet", - abi = "setKeySet((uint32,uint32,bool,string,string,uint256[],uint256[],uint256[],address[]))" - )] - pub struct SetKeySetCall { - pub update: KeySetConfig, + #[ethcall(name = "state", abi = "state(uint256)")] + pub struct StateCall { + pub realm_id: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `setLitActionConfig` function with signature `setLitActionConfig(uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool))` and selector `0xe7d1f9a1` + ///Container type for all input parameters for the `supportsInterface` function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7` #[derive( Clone, ::ethers::contract::EthCall, @@ -19353,15 +22560,11 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "setLitActionConfig", - abi = "setLitActionConfig(uint256,(uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,bool))" - )] - pub struct SetLitActionConfigCall { - pub realm_id: ::ethers::core::types::U256, - pub new_config: LitActionConfig, + #[ethcall(name = "supportsInterface", abi = "supportsInterface(bytes4)")] + pub struct SupportsInterfaceCall { + pub interface_id: [u8; 4], } - ///Container type for all input parameters for the `setMaxVersion` function with signature `setMaxVersion(uint256,(uint256,uint256,uint256))` and selector `0xb34b251d` + ///Container type for all input parameters for the `targetArtifactSelectors` function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0` #[derive( Clone, ::ethers::contract::EthCall, @@ -19374,15 +22577,9 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "setMaxVersion", - abi = "setMaxVersion(uint256,(uint256,uint256,uint256))" - )] - pub struct SetMaxVersionCall { - pub realm_id: ::ethers::core::types::U256, - pub version: Version, - } - ///Container type for all input parameters for the `setMinVersion` function with signature `setMinVersion(uint256,(uint256,uint256,uint256))` and selector `0x0c26c77b` + #[ethcall(name = "targetArtifactSelectors", abi = "targetArtifactSelectors()")] + pub struct TargetArtifactSelectorsCall; + ///Container type for all input parameters for the `targetArtifacts` function with signature `targetArtifacts()` and selector `0x85226c81` #[derive( Clone, ::ethers::contract::EthCall, @@ -19395,15 +22592,9 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "setMinVersion", - abi = "setMinVersion(uint256,(uint256,uint256,uint256))" - )] - pub struct SetMinVersionCall { - pub realm_id: ::ethers::core::types::U256, - pub version: Version, - } - ///Container type for all input parameters for the `setPendingRejoinTimeout` function with signature `setPendingRejoinTimeout(uint256)` and selector `0x2b156e7d` + #[ethcall(name = "targetArtifacts", abi = "targetArtifacts()")] + pub struct TargetArtifactsCall; + ///Container type for all input parameters for the `targetContracts` function with signature `targetContracts()` and selector `0x3f7286f4` #[derive( Clone, ::ethers::contract::EthCall, @@ -19416,14 +22607,9 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "setPendingRejoinTimeout", - abi = "setPendingRejoinTimeout(uint256)" - )] - pub struct SetPendingRejoinTimeoutCall { - pub new_timeout: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `setPermittedValidators` function with signature `setPermittedValidators(uint256,address[])` and selector `0x8354ae59` + #[ethcall(name = "targetContracts", abi = "targetContracts()")] + pub struct TargetContractsCall; + ///Container type for all input parameters for the `targetInterfaces` function with signature `targetInterfaces()` and selector `0x2ade3880` #[derive( Clone, ::ethers::contract::EthCall, @@ -19436,15 +22622,9 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "setPermittedValidators", - abi = "setPermittedValidators(uint256,address[])" - )] - pub struct SetPermittedValidatorsCall { - pub realm_id: ::ethers::core::types::U256, - pub validators_to_set: ::std::vec::Vec<::ethers::core::types::Address>, - } - ///Container type for all input parameters for the `setPermittedValidatorsOn` function with signature `setPermittedValidatorsOn(uint256,bool)` and selector `0x74a22c51` + #[ethcall(name = "targetInterfaces", abi = "targetInterfaces()")] + pub struct TargetInterfacesCall; + ///Container type for all input parameters for the `targetSelectors` function with signature `targetSelectors()` and selector `0x916a17c6` #[derive( Clone, ::ethers::contract::EthCall, @@ -19457,15 +22637,9 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "setPermittedValidatorsOn", - abi = "setPermittedValidatorsOn(uint256,bool)" - )] - pub struct SetPermittedValidatorsOnCall { - pub realm_id: ::ethers::core::types::U256, - pub permitted_validators_on: bool, - } - ///Container type for all input parameters for the `setRealmConfig` function with signature `setRealmConfig(uint256,(uint256,uint256,uint256,uint256,uint256,bool,uint256,bool))` and selector `0x7d35690f` + #[ethcall(name = "targetSelectors", abi = "targetSelectors()")] + pub struct TargetSelectorsCall; + ///Container type for all input parameters for the `targetSenders` function with signature `targetSenders()` and selector `0x3e5e3c23` #[derive( Clone, ::ethers::contract::EthCall, @@ -19478,15 +22652,9 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "setRealmConfig", - abi = "setRealmConfig(uint256,(uint256,uint256,uint256,uint256,uint256,bool,uint256,bool))" - )] - pub struct SetRealmConfigCall { - pub realm_id: ::ethers::core::types::U256, - pub new_config: RealmConfig, - } - ///Container type for all input parameters for the `setTokenTotalSupplyStandIn` function with signature `setTokenTotalSupplyStandIn(uint256)` and selector `0xe941a733` + #[ethcall(name = "targetSenders", abi = "targetSenders()")] + pub struct TargetSendersCall; + ///Container type for all input parameters for the `test_Stake` function with signature `test_Stake()` and selector `0xdbab1cd7` #[derive( Clone, ::ethers::contract::EthCall, @@ -19499,14 +22667,9 @@ pub mod staking { Eq, Hash )] - #[ethcall( - name = "setTokenTotalSupplyStandIn", - abi = "setTokenTotalSupplyStandIn(uint256)" - )] - pub struct SetTokenTotalSupplyStandInCall { - pub new_total_supply: ::ethers::core::types::U256, - } - ///Container type for all input parameters for the `setTrustedForwarder` function with signature `setTrustedForwarder(address)` and selector `0xda742228` + #[ethcall(name = "test_Stake", abi = "test_Stake()")] + pub struct TestStakeCall; + ///Container type for all input parameters for the `test_StakeAndTransfer` function with signature `test_StakeAndTransfer(bool)` and selector `0xaaedca62` #[derive( Clone, ::ethers::contract::EthCall, @@ -19519,11 +22682,11 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "setTrustedForwarder", abi = "setTrustedForwarder(address)")] - pub struct SetTrustedForwarderCall { - pub forwarder: ::ethers::core::types::Address, + #[ethcall(name = "test_StakeAndTransfer", abi = "test_StakeAndTransfer(bool)")] + pub struct TestStakeAndTransferCall { + pub is_safe_transfer: bool, } - ///Container type for all input parameters for the `setValidatorCommissionRate` function with signature `setValidatorCommissionRate(uint256)` and selector `0x7149ab58` + ///Container type for all input parameters for the `test_StakeAndTransfer_ClaimRewards` function with signature `test_StakeAndTransfer_ClaimRewards(bool)` and selector `0x96007d44` #[derive( Clone, ::ethers::contract::EthCall, @@ -19537,13 +22700,13 @@ pub mod staking { Hash )] #[ethcall( - name = "setValidatorCommissionRate", - abi = "setValidatorCommissionRate(uint256)" + name = "test_StakeAndTransfer_ClaimRewards", + abi = "test_StakeAndTransfer_ClaimRewards(bool)" )] - pub struct SetValidatorCommissionRateCall { - pub rate: ::ethers::core::types::U256, + pub struct TestStakeAndTransferClaimRewardsCall { + pub is_safe_transfer: bool, } - ///Container type for all input parameters for the `shouldKickValidator` function with signature `shouldKickValidator(uint256,address)` and selector `0x1e966b97` + ///Container type for all input parameters for the `test_StakeAndTransfer_ReceiverMutatesStakeRecord` function with signature `test_StakeAndTransfer_ReceiverMutatesStakeRecord(bool,uint256)` and selector `0x6239b4f7` #[derive( Clone, ::ethers::contract::EthCall, @@ -19557,14 +22720,14 @@ pub mod staking { Hash )] #[ethcall( - name = "shouldKickValidator", - abi = "shouldKickValidator(uint256,address)" + name = "test_StakeAndTransfer_ReceiverMutatesStakeRecord", + abi = "test_StakeAndTransfer_ReceiverMutatesStakeRecord(bool,uint256)" )] - pub struct ShouldKickValidatorCall { - pub realm_id: ::ethers::core::types::U256, - pub staker_address: ::ethers::core::types::Address, + pub struct TestStakeAndTransferReceiverMutatesStakeRecordCall { + pub is_safe_transfer: bool, + pub operation: ::ethers::core::types::U256, } - ///Container type for all input parameters for the `signalReadyForNextEpoch` function with signature `signalReadyForNextEpoch(uint256,uint256)` and selector `0x9a25bdee` + ///Container type for all input parameters for the `test_StakeAndTransfer_RevertNotOwner` function with signature `test_StakeAndTransfer_RevertNotOwner(bool)` and selector `0x5ad8b9a9` #[derive( Clone, ::ethers::contract::EthCall, @@ -19578,14 +22741,13 @@ pub mod staking { Hash )] #[ethcall( - name = "signalReadyForNextEpoch", - abi = "signalReadyForNextEpoch(uint256,uint256)" + name = "test_StakeAndTransfer_RevertNotOwner", + abi = "test_StakeAndTransfer_RevertNotOwner(bool)" )] - pub struct SignalReadyForNextEpochCall { - pub realm_id: ::ethers::core::types::U256, - pub epoch_number: ::ethers::core::types::U256, + pub struct TestStakeAndTransferRevertNotOwnerCall { + pub is_safe_transfer: bool, } - ///Container type for all input parameters for the `splitStakeRecord` function with signature `splitStakeRecord(address,uint256,uint256)` and selector `0xf69ccb92` + ///Container type for all input parameters for the `test_StakeAndTransfer_TokenOwnerByIndex` function with signature `test_StakeAndTransfer_TokenOwnerByIndex(bool)` and selector `0xa7319b44` #[derive( Clone, ::ethers::contract::EthCall, @@ -19599,15 +22761,13 @@ pub mod staking { Hash )] #[ethcall( - name = "splitStakeRecord", - abi = "splitStakeRecord(address,uint256,uint256)" + name = "test_StakeAndTransfer_TokenOwnerByIndex", + abi = "test_StakeAndTransfer_TokenOwnerByIndex(bool)" )] - pub struct SplitStakeRecordCall { - pub staker_address: ::ethers::core::types::Address, - pub stake_record_id: ::ethers::core::types::U256, - pub ratio: ::ethers::core::types::U256, + pub struct TestStakeAndTransferTokenOwnerByIndexCall { + pub is_safe_transfer: bool, } - ///Container type for all input parameters for the `stake` function with signature `stake(uint256,uint256,address)` and selector `0x7628a37d` + ///Container type for all input parameters for the `test_StakeAndTransfer_Withdraw` function with signature `test_StakeAndTransfer_Withdraw(bool,bool)` and selector `0x86ef1d4d` #[derive( Clone, ::ethers::contract::EthCall, @@ -19620,13 +22780,15 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "stake", abi = "stake(uint256,uint256,address)")] - pub struct StakeCall { - pub amount: ::ethers::core::types::U256, - pub time_lock: ::ethers::core::types::U256, - pub operator_staker_address: ::ethers::core::types::Address, + #[ethcall( + name = "test_StakeAndTransfer_Withdraw", + abi = "test_StakeAndTransfer_Withdraw(bool,bool)" + )] + pub struct TestStakeAndTransferWithdrawCall { + pub is_safe_transfer: bool, + pub is_unfreeze_before_transfer: bool, } - ///Container type for all input parameters for the `stakeBalanceOf` function with signature `stakeBalanceOf(address)` and selector `0xaf46aa08` + ///Container type for all input parameters for the `test_StakeApproveAndTransfer` function with signature `test_StakeApproveAndTransfer(bool)` and selector `0x22e7a7ac` #[derive( Clone, ::ethers::contract::EthCall, @@ -19639,11 +22801,14 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "stakeBalanceOf", abi = "stakeBalanceOf(address)")] - pub struct StakeBalanceOfCall { - pub staker_address: ::ethers::core::types::Address, + #[ethcall( + name = "test_StakeApproveAndTransfer", + abi = "test_StakeApproveAndTransfer(bool)" + )] + pub struct TestStakeApproveAndTransferCall { + pub is_safe_transfer: bool, } - ///Container type for all input parameters for the `stakerToValidatorsTheyStakedTo` function with signature `stakerToValidatorsTheyStakedTo(address)` and selector `0x6817d36e` + ///Container type for all input parameters for the `test_StakeApproveForAllAndTransfer` function with signature `test_StakeApproveForAllAndTransfer(bool)` and selector `0x78854e37` #[derive( Clone, ::ethers::contract::EthCall, @@ -19657,13 +22822,13 @@ pub mod staking { Hash )] #[ethcall( - name = "stakerToValidatorsTheyStakedTo", - abi = "stakerToValidatorsTheyStakedTo(address)" + name = "test_StakeApproveForAllAndTransfer", + abi = "test_StakeApproveForAllAndTransfer(bool)" )] - pub struct StakerToValidatorsTheyStakedToCall { - pub staker: ::ethers::core::types::Address, + pub struct TestStakeApproveForAllAndTransferCall { + pub is_safe_transfer: bool, } - ///Container type for all input parameters for the `state` function with signature `state(uint256)` and selector `0x3e4f49e6` + ///Container type for all input parameters for the `test_StakeMax_TransferShouldFail` function with signature `test_StakeMax_TransferShouldFail(bool)` and selector `0xb29fabc7` #[derive( Clone, ::ethers::contract::EthCall, @@ -19676,11 +22841,14 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "state", abi = "state(uint256)")] - pub struct StateCall { - pub realm_id: ::ethers::core::types::U256, + #[ethcall( + name = "test_StakeMax_TransferShouldFail", + abi = "test_StakeMax_TransferShouldFail(bool)" + )] + pub struct TestStakeMaxTransferShouldFailCall { + pub is_safe_transfer: bool, } - ///Container type for all input parameters for the `supportsInterface` function with signature `supportsInterface(bytes4)` and selector `0x01ffc9a7` + ///Container type for all input parameters for the `test_Stake_MutateStakeRecord` function with signature `test_Stake_MutateStakeRecord(uint256)` and selector `0xa90bb850` #[derive( Clone, ::ethers::contract::EthCall, @@ -19693,9 +22861,12 @@ pub mod staking { Eq, Hash )] - #[ethcall(name = "supportsInterface", abi = "supportsInterface(bytes4)")] - pub struct SupportsInterfaceCall { - pub interface_id: [u8; 4], + #[ethcall( + name = "test_Stake_MutateStakeRecord", + abi = "test_Stake_MutateStakeRecord(uint256)" + )] + pub struct TestStakeMutateStakeRecordCall { + pub operation: ::ethers::core::types::U256, } ///Container type for all input parameters for the `tokenOfOwnerByIndex` function with signature `tokenOfOwnerByIndex(address,uint256)` and selector `0x2f745c59` #[derive( @@ -19910,6 +23081,13 @@ pub mod staking { serde::Deserialize, )] pub enum StakingCalls { + IsTest(IsTestCall), + GenerateAddresses(GenerateAddressesCall), + GenerateAddressesWithOffset(GenerateAddressesWithOffsetCall), + GeneratePubKeys(GeneratePubKeysCall), + GenerateUint256S(GenerateUint256SCall), + GenerateUint256SWithOffset(GenerateUint256SWithOffsetCall), + GenerateValidators(GenerateValidatorsCall), AddRealm(AddRealmCall), AdminKickValidatorInNextEpoch(AdminKickValidatorInNextEpochCall), AdminRejoinValidator(AdminRejoinValidatorCall), @@ -19948,11 +23126,16 @@ pub mod staking { EmitClearOfflinePhaseData(EmitClearOfflinePhaseDataCall), EmitCountOfflinePhaseData(EmitCountOfflinePhaseDataCall), Epoch(EpochCall), + ExcludeArtifacts(ExcludeArtifactsCall), + ExcludeContracts(ExcludeContractsCall), + ExcludeSelectors(ExcludeSelectorsCall), + ExcludeSenders(ExcludeSendersCall), Exit(ExitCall), FacetAddress(FacetAddressCall), FacetAddresses(FacetAddressesCall), FacetFunctionSelectors(FacetFunctionSelectorsCall), Facets(FacetsCall), + Failed(FailedCall), GetActiveUnkickedValidatorCount(GetActiveUnkickedValidatorCountCall), GetActiveUnkickedValidatorStructs(GetActiveUnkickedValidatorStructsCall), GetActiveUnkickedValidatorStructsAndCounts( @@ -19985,6 +23168,7 @@ pub mod staking { GetMinVersionString(GetMinVersionStringCall), GetMinimumSelfStake(GetMinimumSelfStakeCall), GetMinimumStake(GetMinimumStakeCall), + GetMostRecentStakeRecord(GetMostRecentStakeRecordCall), GetNodeAttestedPubKeyMappings(GetNodeAttestedPubKeyMappingsCall), GetNodeDemerits(GetNodeDemeritsCall), GetNodeStakerAddressMappings(GetNodeStakerAddressMappingsCall), @@ -20076,6 +23260,7 @@ pub mod staking { RequestToLeaveAsNode(RequestToLeaveAsNodeCall), SafeTransferFrom(SafeTransferFromCall), SafeTransferFromWithFromAndToAndData(SafeTransferFromWithFromAndToAndDataCall), + SelfStakeBalanceOf(SelfStakeBalanceOfCall), SetApprovalForAll(SetApprovalForAllCall), SetComplaintConfig(SetComplaintConfigCall), SetConfig(SetConfigCall), @@ -20097,15 +23282,34 @@ pub mod staking { SetRealmConfig(SetRealmConfigCall), SetTokenTotalSupplyStandIn(SetTokenTotalSupplyStandInCall), SetTrustedForwarder(SetTrustedForwarderCall), + SetUp(SetUpCall), SetValidatorCommissionRate(SetValidatorCommissionRateCall), ShouldKickValidator(ShouldKickValidatorCall), SignalReadyForNextEpoch(SignalReadyForNextEpochCall), SplitStakeRecord(SplitStakeRecordCall), Stake(StakeCall), - StakeBalanceOf(StakeBalanceOfCall), StakerToValidatorsTheyStakedTo(StakerToValidatorsTheyStakedToCall), State(StateCall), SupportsInterface(SupportsInterfaceCall), + TargetArtifactSelectors(TargetArtifactSelectorsCall), + TargetArtifacts(TargetArtifactsCall), + TargetContracts(TargetContractsCall), + TargetInterfaces(TargetInterfacesCall), + TargetSelectors(TargetSelectorsCall), + TargetSenders(TargetSendersCall), + TestStake(TestStakeCall), + TestStakeAndTransfer(TestStakeAndTransferCall), + TestStakeAndTransferClaimRewards(TestStakeAndTransferClaimRewardsCall), + TestStakeAndTransferReceiverMutatesStakeRecord( + TestStakeAndTransferReceiverMutatesStakeRecordCall, + ), + TestStakeAndTransferRevertNotOwner(TestStakeAndTransferRevertNotOwnerCall), + TestStakeAndTransferTokenOwnerByIndex(TestStakeAndTransferTokenOwnerByIndexCall), + TestStakeAndTransferWithdraw(TestStakeAndTransferWithdrawCall), + TestStakeApproveAndTransfer(TestStakeApproveAndTransferCall), + TestStakeApproveForAllAndTransfer(TestStakeApproveForAllAndTransferCall), + TestStakeMaxTransferShouldFail(TestStakeMaxTransferShouldFailCall), + TestStakeMutateStakeRecord(TestStakeMutateStakeRecordCall), TokenOfOwnerByIndex(TokenOfOwnerByIndexCall), TokenToStakeRecord(TokenToStakeRecordCall), TotalSupply(TotalSupplyCall), @@ -20123,6 +23327,41 @@ pub mod staking { data: impl AsRef<[u8]>, ) -> ::core::result::Result { let data = data.as_ref(); + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::IsTest(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::GenerateAddresses(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::GenerateAddressesWithOffset(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::GeneratePubKeys(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::GenerateUint256S(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::GenerateUint256SWithOffset(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::GenerateValidators(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -20285,6 +23524,26 @@ pub mod staking { ) { return Ok(Self::Epoch(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::ExcludeArtifacts(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::ExcludeContracts(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::ExcludeSelectors(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::ExcludeSenders(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -20310,6 +23569,11 @@ pub mod staking { ) { return Ok(Self::Facets(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::Failed(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -20440,6 +23704,11 @@ pub mod staking { ) { return Ok(Self::GetMinimumStake(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::GetMostRecentStakeRecord(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -20865,6 +24134,11 @@ pub mod staking { ) { return Ok(Self::SafeTransferFromWithFromAndToAndData(decoded)); } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SelfStakeBalanceOf(decoded)); + } if let Ok(decoded) = ::decode( data, ) { @@ -20910,110 +24184,195 @@ pub mod staking { ) { return Ok(Self::SetEpochState(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetEpochTimeout(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetIpPortNodeAddress(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetKeySet(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetLitActionConfig(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetMaxVersion(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetMinVersion(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetPendingRejoinTimeout(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetPermittedValidators(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetPermittedValidatorsOn(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetRealmConfig(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetTokenTotalSupplyStandIn(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetTrustedForwarder(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetUp(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SetValidatorCommissionRate(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::ShouldKickValidator(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SignalReadyForNextEpoch(decoded)); + } + if let Ok(decoded) = ::decode( + data, + ) { + return Ok(Self::SplitStakeRecord(decoded)); + } + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetEpochTimeout(decoded)); + return Ok(Self::Stake(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetIpPortNodeAddress(decoded)); + return Ok(Self::StakerToValidatorsTheyStakedTo(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetKeySet(decoded)); + return Ok(Self::State(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetLitActionConfig(decoded)); + return Ok(Self::SupportsInterface(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetMaxVersion(decoded)); + return Ok(Self::TargetArtifactSelectors(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetMinVersion(decoded)); + return Ok(Self::TargetArtifacts(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetPendingRejoinTimeout(decoded)); + return Ok(Self::TargetContracts(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetPermittedValidators(decoded)); + return Ok(Self::TargetInterfaces(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetPermittedValidatorsOn(decoded)); + return Ok(Self::TargetSelectors(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetRealmConfig(decoded)); + return Ok(Self::TargetSenders(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetTokenTotalSupplyStandIn(decoded)); + return Ok(Self::TestStake(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetTrustedForwarder(decoded)); + return Ok(Self::TestStakeAndTransfer(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SetValidatorCommissionRate(decoded)); + return Ok(Self::TestStakeAndTransferClaimRewards(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::ShouldKickValidator(decoded)); + return Ok(Self::TestStakeAndTransferReceiverMutatesStakeRecord(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SignalReadyForNextEpoch(decoded)); + return Ok(Self::TestStakeAndTransferRevertNotOwner(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SplitStakeRecord(decoded)); + return Ok(Self::TestStakeAndTransferTokenOwnerByIndex(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::Stake(decoded)); + return Ok(Self::TestStakeAndTransferWithdraw(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::StakeBalanceOf(decoded)); + return Ok(Self::TestStakeApproveAndTransfer(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::StakerToValidatorsTheyStakedTo(decoded)); + return Ok(Self::TestStakeApproveForAllAndTransfer(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::State(decoded)); + return Ok(Self::TestStakeMaxTransferShouldFail(decoded)); } - if let Ok(decoded) = ::decode( + if let Ok(decoded) = ::decode( data, ) { - return Ok(Self::SupportsInterface(decoded)); + return Ok(Self::TestStakeMutateStakeRecord(decoded)); } if let Ok(decoded) = ::decode( data, @@ -21076,6 +24435,25 @@ pub mod staking { impl ::ethers::core::abi::AbiEncode for StakingCalls { fn encode(self) -> Vec { match self { + Self::IsTest(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::GenerateAddresses(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GenerateAddressesWithOffset(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GeneratePubKeys(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GenerateUint256S(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GenerateUint256SWithOffset(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::GenerateValidators(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::AddRealm(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -21168,6 +24546,18 @@ pub mod staking { ::ethers::core::abi::AbiEncode::encode(element) } Self::Epoch(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::ExcludeArtifacts(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ExcludeContracts(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ExcludeSelectors(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::ExcludeSenders(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::Exit(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::FacetAddress(element) => { ::ethers::core::abi::AbiEncode::encode(element) @@ -21179,6 +24569,7 @@ pub mod staking { ::ethers::core::abi::AbiEncode::encode(element) } Self::Facets(element) => ::ethers::core::abi::AbiEncode::encode(element), + Self::Failed(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::GetActiveUnkickedValidatorCount(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -21257,6 +24648,9 @@ pub mod staking { Self::GetMinimumStake(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::GetMostRecentStakeRecord(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::GetNodeAttestedPubKeyMappings(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -21504,6 +24898,9 @@ pub mod staking { Self::SafeTransferFromWithFromAndToAndData(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::SelfStakeBalanceOf(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::SetApprovalForAll(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -21567,6 +24964,7 @@ pub mod staking { Self::SetTrustedForwarder(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::SetUp(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::SetValidatorCommissionRate(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -21580,9 +24978,6 @@ pub mod staking { ::ethers::core::abi::AbiEncode::encode(element) } Self::Stake(element) => ::ethers::core::abi::AbiEncode::encode(element), - Self::StakeBalanceOf(element) => { - ::ethers::core::abi::AbiEncode::encode(element) - } Self::StakerToValidatorsTheyStakedTo(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -21590,6 +24985,57 @@ pub mod staking { Self::SupportsInterface(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::TargetArtifactSelectors(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TargetArtifacts(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TargetContracts(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TargetInterfaces(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TargetSelectors(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TargetSenders(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestStake(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestStakeAndTransfer(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestStakeAndTransferClaimRewards(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestStakeAndTransferReceiverMutatesStakeRecord(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestStakeAndTransferRevertNotOwner(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestStakeAndTransferTokenOwnerByIndex(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestStakeAndTransferWithdraw(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestStakeApproveAndTransfer(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestStakeApproveForAllAndTransfer(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestStakeMaxTransferShouldFail(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } + Self::TestStakeMutateStakeRecord(element) => { + ::ethers::core::abi::AbiEncode::encode(element) + } Self::TokenOfOwnerByIndex(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -21629,6 +25075,19 @@ pub mod staking { impl ::core::fmt::Display for StakingCalls { fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { match self { + Self::IsTest(element) => ::core::fmt::Display::fmt(element, f), + Self::GenerateAddresses(element) => ::core::fmt::Display::fmt(element, f), + Self::GenerateAddressesWithOffset(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::GeneratePubKeys(element) => ::core::fmt::Display::fmt(element, f), + Self::GenerateUint256S(element) => ::core::fmt::Display::fmt(element, f), + Self::GenerateUint256SWithOffset(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::GenerateValidators(element) => { + ::core::fmt::Display::fmt(element, f) + } Self::AddRealm(element) => ::core::fmt::Display::fmt(element, f), Self::AdminKickValidatorInNextEpoch(element) => { ::core::fmt::Display::fmt(element, f) @@ -21701,6 +25160,10 @@ pub mod staking { ::core::fmt::Display::fmt(element, f) } Self::Epoch(element) => ::core::fmt::Display::fmt(element, f), + Self::ExcludeArtifacts(element) => ::core::fmt::Display::fmt(element, f), + Self::ExcludeContracts(element) => ::core::fmt::Display::fmt(element, f), + Self::ExcludeSelectors(element) => ::core::fmt::Display::fmt(element, f), + Self::ExcludeSenders(element) => ::core::fmt::Display::fmt(element, f), Self::Exit(element) => ::core::fmt::Display::fmt(element, f), Self::FacetAddress(element) => ::core::fmt::Display::fmt(element, f), Self::FacetAddresses(element) => ::core::fmt::Display::fmt(element, f), @@ -21708,6 +25171,7 @@ pub mod staking { ::core::fmt::Display::fmt(element, f) } Self::Facets(element) => ::core::fmt::Display::fmt(element, f), + Self::Failed(element) => ::core::fmt::Display::fmt(element, f), Self::GetActiveUnkickedValidatorCount(element) => { ::core::fmt::Display::fmt(element, f) } @@ -21766,6 +25230,9 @@ pub mod staking { ::core::fmt::Display::fmt(element, f) } Self::GetMinimumStake(element) => ::core::fmt::Display::fmt(element, f), + Self::GetMostRecentStakeRecord(element) => { + ::core::fmt::Display::fmt(element, f) + } Self::GetNodeAttestedPubKeyMappings(element) => { ::core::fmt::Display::fmt(element, f) } @@ -21961,6 +25428,9 @@ pub mod staking { Self::SafeTransferFromWithFromAndToAndData(element) => { ::core::fmt::Display::fmt(element, f) } + Self::SelfStakeBalanceOf(element) => { + ::core::fmt::Display::fmt(element, f) + } Self::SetApprovalForAll(element) => ::core::fmt::Display::fmt(element, f), Self::SetComplaintConfig(element) => { ::core::fmt::Display::fmt(element, f) @@ -22002,6 +25472,7 @@ pub mod staking { Self::SetTrustedForwarder(element) => { ::core::fmt::Display::fmt(element, f) } + Self::SetUp(element) => ::core::fmt::Display::fmt(element, f), Self::SetValidatorCommissionRate(element) => { ::core::fmt::Display::fmt(element, f) } @@ -22013,12 +25484,50 @@ pub mod staking { } Self::SplitStakeRecord(element) => ::core::fmt::Display::fmt(element, f), Self::Stake(element) => ::core::fmt::Display::fmt(element, f), - Self::StakeBalanceOf(element) => ::core::fmt::Display::fmt(element, f), Self::StakerToValidatorsTheyStakedTo(element) => { ::core::fmt::Display::fmt(element, f) } Self::State(element) => ::core::fmt::Display::fmt(element, f), Self::SupportsInterface(element) => ::core::fmt::Display::fmt(element, f), + Self::TargetArtifactSelectors(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TargetArtifacts(element) => ::core::fmt::Display::fmt(element, f), + Self::TargetContracts(element) => ::core::fmt::Display::fmt(element, f), + Self::TargetInterfaces(element) => ::core::fmt::Display::fmt(element, f), + Self::TargetSelectors(element) => ::core::fmt::Display::fmt(element, f), + Self::TargetSenders(element) => ::core::fmt::Display::fmt(element, f), + Self::TestStake(element) => ::core::fmt::Display::fmt(element, f), + Self::TestStakeAndTransfer(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestStakeAndTransferClaimRewards(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestStakeAndTransferReceiverMutatesStakeRecord(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestStakeAndTransferRevertNotOwner(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestStakeAndTransferTokenOwnerByIndex(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestStakeAndTransferWithdraw(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestStakeApproveAndTransfer(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestStakeApproveForAllAndTransfer(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestStakeMaxTransferShouldFail(element) => { + ::core::fmt::Display::fmt(element, f) + } + Self::TestStakeMutateStakeRecord(element) => { + ::core::fmt::Display::fmt(element, f) + } Self::TokenOfOwnerByIndex(element) => { ::core::fmt::Display::fmt(element, f) } @@ -22043,6 +25552,41 @@ pub mod staking { } } } + impl ::core::convert::From for StakingCalls { + fn from(value: IsTestCall) -> Self { + Self::IsTest(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: GenerateAddressesCall) -> Self { + Self::GenerateAddresses(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: GenerateAddressesWithOffsetCall) -> Self { + Self::GenerateAddressesWithOffset(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: GeneratePubKeysCall) -> Self { + Self::GeneratePubKeys(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: GenerateUint256SCall) -> Self { + Self::GenerateUint256S(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: GenerateUint256SWithOffsetCall) -> Self { + Self::GenerateUint256SWithOffset(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: GenerateValidatorsCall) -> Self { + Self::GenerateValidators(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: AddRealmCall) -> Self { Self::AddRealm(value) @@ -22206,6 +25750,26 @@ pub mod staking { Self::Epoch(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: ExcludeArtifactsCall) -> Self { + Self::ExcludeArtifacts(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: ExcludeContractsCall) -> Self { + Self::ExcludeContracts(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: ExcludeSelectorsCall) -> Self { + Self::ExcludeSelectors(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: ExcludeSendersCall) -> Self { + Self::ExcludeSenders(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: ExitCall) -> Self { Self::Exit(value) @@ -22231,6 +25795,11 @@ pub mod staking { Self::Facets(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: FailedCall) -> Self { + Self::Failed(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: GetActiveUnkickedValidatorCountCall) -> Self { Self::GetActiveUnkickedValidatorCount(value) @@ -22364,6 +25933,11 @@ pub mod staking { Self::GetMinimumStake(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: GetMostRecentStakeRecordCall) -> Self { + Self::GetMostRecentStakeRecord(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: GetNodeAttestedPubKeyMappingsCall) -> Self { Self::GetNodeAttestedPubKeyMappings(value) @@ -22793,6 +26367,11 @@ pub mod staking { Self::SafeTransferFromWithFromAndToAndData(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: SelfStakeBalanceOfCall) -> Self { + Self::SelfStakeBalanceOf(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: SetApprovalForAllCall) -> Self { Self::SetApprovalForAll(value) @@ -22898,6 +26477,11 @@ pub mod staking { Self::SetTrustedForwarder(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: SetUpCall) -> Self { + Self::SetUp(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: SetValidatorCommissionRateCall) -> Self { Self::SetValidatorCommissionRate(value) @@ -22923,11 +26507,6 @@ pub mod staking { Self::Stake(value) } } - impl ::core::convert::From for StakingCalls { - fn from(value: StakeBalanceOfCall) -> Self { - Self::StakeBalanceOf(value) - } - } impl ::core::convert::From for StakingCalls { fn from(value: StakerToValidatorsTheyStakedToCall) -> Self { Self::StakerToValidatorsTheyStakedTo(value) @@ -22943,6 +26522,93 @@ pub mod staking { Self::SupportsInterface(value) } } + impl ::core::convert::From for StakingCalls { + fn from(value: TargetArtifactSelectorsCall) -> Self { + Self::TargetArtifactSelectors(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TargetArtifactsCall) -> Self { + Self::TargetArtifacts(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TargetContractsCall) -> Self { + Self::TargetContracts(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TargetInterfacesCall) -> Self { + Self::TargetInterfaces(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TargetSelectorsCall) -> Self { + Self::TargetSelectors(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TargetSendersCall) -> Self { + Self::TargetSenders(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TestStakeCall) -> Self { + Self::TestStake(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TestStakeAndTransferCall) -> Self { + Self::TestStakeAndTransfer(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TestStakeAndTransferClaimRewardsCall) -> Self { + Self::TestStakeAndTransferClaimRewards(value) + } + } + impl ::core::convert::From + for StakingCalls { + fn from(value: TestStakeAndTransferReceiverMutatesStakeRecordCall) -> Self { + Self::TestStakeAndTransferReceiverMutatesStakeRecord(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TestStakeAndTransferRevertNotOwnerCall) -> Self { + Self::TestStakeAndTransferRevertNotOwner(value) + } + } + impl ::core::convert::From + for StakingCalls { + fn from(value: TestStakeAndTransferTokenOwnerByIndexCall) -> Self { + Self::TestStakeAndTransferTokenOwnerByIndex(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TestStakeAndTransferWithdrawCall) -> Self { + Self::TestStakeAndTransferWithdraw(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TestStakeApproveAndTransferCall) -> Self { + Self::TestStakeApproveAndTransfer(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TestStakeApproveForAllAndTransferCall) -> Self { + Self::TestStakeApproveForAllAndTransfer(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TestStakeMaxTransferShouldFailCall) -> Self { + Self::TestStakeMaxTransferShouldFail(value) + } + } + impl ::core::convert::From for StakingCalls { + fn from(value: TestStakeMutateStakeRecordCall) -> Self { + Self::TestStakeMutateStakeRecord(value) + } + } impl ::core::convert::From for StakingCalls { fn from(value: TokenOfOwnerByIndexCall) -> Self { Self::TokenOfOwnerByIndex(value) @@ -22998,6 +26664,110 @@ pub mod staking { Self::Withdraw(value) } } + ///Container type for all return fields from the `IS_TEST` function with signature `IS_TEST()` and selector `0xfa7626d4` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct IsTestReturn(pub bool); + ///Container type for all return fields from the `_generateAddresses` function with signature `_generateAddresses(uint256)` and selector `0x678ac78a` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GenerateAddressesReturn( + pub ::std::vec::Vec<::ethers::core::types::Address>, + ); + ///Container type for all return fields from the `_generateAddressesWithOffset` function with signature `_generateAddressesWithOffset(uint256,uint256)` and selector `0xa5187b2b` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GenerateAddressesWithOffsetReturn( + pub ::std::vec::Vec<::ethers::core::types::Address>, + ); + ///Container type for all return fields from the `_generatePubKeys` function with signature `_generatePubKeys(uint256)` and selector `0xfed0a77b` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GeneratePubKeysReturn(pub ::std::vec::Vec<::ethers::core::types::Bytes>); + ///Container type for all return fields from the `_generateUint256s` function with signature `_generateUint256s(uint256)` and selector `0xae517f4d` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GenerateUint256SReturn(pub ::std::vec::Vec<::ethers::core::types::U256>); + ///Container type for all return fields from the `_generateUint256sWithOffset` function with signature `_generateUint256sWithOffset(uint256,uint256)` and selector `0xfb9d55b8` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GenerateUint256SWithOffsetReturn( + pub ::std::vec::Vec<::ethers::core::types::U256>, + ); + ///Container type for all return fields from the `_generateValidators` function with signature `_generateValidators(uint256)` and selector `0xc5344d40` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GenerateValidatorsReturn(pub ::std::vec::Vec); ///Container type for all return fields from the `addRealm` function with signature `addRealm()` and selector `0x472a7d89` #[derive( Clone, @@ -23172,6 +26942,70 @@ pub mod staking { Hash )] pub struct EpochReturn(pub Epoch); + ///Container type for all return fields from the `excludeArtifacts` function with signature `excludeArtifacts()` and selector `0xb5508aa9` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct ExcludeArtifactsReturn { + pub excluded_artifacts: ::std::vec::Vec<::std::string::String>, + } + ///Container type for all return fields from the `excludeContracts` function with signature `excludeContracts()` and selector `0xe20c9f71` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct ExcludeContractsReturn { + pub excluded_contracts: ::std::vec::Vec<::ethers::core::types::Address>, + } + ///Container type for all return fields from the `excludeSelectors` function with signature `excludeSelectors()` and selector `0xb0464fdc` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct ExcludeSelectorsReturn { + pub excluded_selectors: ::std::vec::Vec, + } + ///Container type for all return fields from the `excludeSenders` function with signature `excludeSenders()` and selector `0x1ed7831c` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct ExcludeSendersReturn { + pub excluded_senders: ::std::vec::Vec<::ethers::core::types::Address>, + } ///Container type for all return fields from the `facetAddress` function with signature `facetAddress(bytes4)` and selector `0xcdffacc6` #[derive( Clone, @@ -23236,6 +27070,20 @@ pub mod staking { pub struct FacetsReturn { pub facets: ::std::vec::Vec, } + ///Container type for all return fields from the `failed` function with signature `failed()` and selector `0xba414fa6` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct FailedReturn(pub bool); ///Container type for all return fields from the `getActiveUnkickedValidatorCount` function with signature `getActiveUnkickedValidatorCount(uint256)` and selector `0x7a808c0d` #[derive( Clone, @@ -23611,6 +27459,20 @@ pub mod staking { Hash )] pub struct GetMinimumStakeReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `getMostRecentStakeRecord` function with signature `getMostRecentStakeRecord(address,address)` and selector `0x7d0f412f` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct GetMostRecentStakeRecordReturn(pub StakeRecord); ///Container type for all return fields from the `getNodeAttestedPubKeyMappings` function with signature `getNodeAttestedPubKeyMappings(address[])` and selector `0x88790aee` #[derive( Clone, @@ -24572,7 +28434,7 @@ pub mod staking { Hash )] pub struct RealmConfigReturn(pub RealmConfig); - ///Container type for all return fields from the `shouldKickValidator` function with signature `shouldKickValidator(uint256,address)` and selector `0x1e966b97` + ///Container type for all return fields from the `selfStakeBalanceOf` function with signature `selfStakeBalanceOf(address)` and selector `0xeddf837a` #[derive( Clone, ::ethers::contract::EthAbiType, @@ -24585,8 +28447,8 @@ pub mod staking { Eq, Hash )] - pub struct ShouldKickValidatorReturn(pub bool); - ///Container type for all return fields from the `stakeBalanceOf` function with signature `stakeBalanceOf(address)` and selector `0xaf46aa08` + pub struct SelfStakeBalanceOfReturn(pub ::ethers::core::types::U256); + ///Container type for all return fields from the `shouldKickValidator` function with signature `shouldKickValidator(uint256,address)` and selector `0x1e966b97` #[derive( Clone, ::ethers::contract::EthAbiType, @@ -24599,7 +28461,7 @@ pub mod staking { Eq, Hash )] - pub struct StakeBalanceOfReturn(pub ::ethers::core::types::U256); + pub struct ShouldKickValidatorReturn(pub bool); ///Container type for all return fields from the `stakerToValidatorsTheyStakedTo` function with signature `stakerToValidatorsTheyStakedTo(address)` and selector `0x6817d36e` #[derive( Clone, @@ -24644,6 +28506,102 @@ pub mod staking { Hash )] pub struct SupportsInterfaceReturn(pub bool); + ///Container type for all return fields from the `targetArtifactSelectors` function with signature `targetArtifactSelectors()` and selector `0x66d9a9a0` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct TargetArtifactSelectorsReturn { + pub targeted_artifact_selectors: ::std::vec::Vec, + } + ///Container type for all return fields from the `targetArtifacts` function with signature `targetArtifacts()` and selector `0x85226c81` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct TargetArtifactsReturn { + pub targeted_artifacts: ::std::vec::Vec<::std::string::String>, + } + ///Container type for all return fields from the `targetContracts` function with signature `targetContracts()` and selector `0x3f7286f4` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct TargetContractsReturn { + pub targeted_contracts: ::std::vec::Vec<::ethers::core::types::Address>, + } + ///Container type for all return fields from the `targetInterfaces` function with signature `targetInterfaces()` and selector `0x2ade3880` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct TargetInterfacesReturn { + pub targeted_interfaces: ::std::vec::Vec, + } + ///Container type for all return fields from the `targetSelectors` function with signature `targetSelectors()` and selector `0x916a17c6` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct TargetSelectorsReturn { + pub targeted_selectors: ::std::vec::Vec, + } + ///Container type for all return fields from the `targetSenders` function with signature `targetSenders()` and selector `0x3e5e3c23` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct TargetSendersReturn { + pub targeted_senders: ::std::vec::Vec<::ethers::core::types::Address>, + } ///Container type for all return fields from the `tokenOfOwnerByIndex` function with signature `tokenOfOwnerByIndex(address,uint256)` and selector `0x2f745c59` #[derive( Clone, @@ -25130,4 +29088,72 @@ pub mod staking { pub minor: ::ethers::core::types::U256, pub patch: ::ethers::core::types::U256, } + ///`TestValidator(address,uint256)` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct TestValidator { + pub staker_address: ::ethers::core::types::Address, + pub comms_key: ::ethers::core::types::U256, + } + ///`FuzzArtifactSelector(string,bytes4[])` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct FuzzArtifactSelector { + pub artifact: ::std::string::String, + pub selectors: ::std::vec::Vec<[u8; 4]>, + } + ///`FuzzInterface(address,string[])` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct FuzzInterface { + pub addr: ::ethers::core::types::Address, + pub artifacts: ::std::vec::Vec<::std::string::String>, + } + ///`FuzzSelector(address,bytes4[])` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + serde::Serialize, + serde::Deserialize, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct FuzzSelector { + pub addr: ::ethers::core::types::Address, + pub selectors: ::std::vec::Vec<[u8; 4]>, + } } From 9c7b80e8f4d7adbc68be45601680f8e4df24f08e Mon Sep 17 00:00:00 2001 From: Howard Date: Tue, 2 Dec 2025 23:50:14 -0500 Subject: [PATCH 16/18] Update ABIs and rust bindings --- rust/lit-core/lit-blockchain-lite/abis/PKPHelper.json | 4 ++-- rust/lit-core/lit-blockchain-lite/src/contracts/pkp_helper.rs | 4 ++-- rust/lit-core/lit-blockchain/abis/PKPHelper.json | 4 ++-- rust/lit-core/lit-blockchain/src/contracts/pkp_helper.rs | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/rust/lit-core/lit-blockchain-lite/abis/PKPHelper.json b/rust/lit-core/lit-blockchain-lite/abis/PKPHelper.json index f18177c..4798457 100644 --- a/rust/lit-core/lit-blockchain-lite/abis/PKPHelper.json +++ b/rust/lit-core/lit-blockchain-lite/abis/PKPHelper.json @@ -1007,8 +1007,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50604051613a76380380613a7683398101604081905261002f916100d5565b61003833610085565b600280546001600160a01b0384166001600160a01b03198216811783558392916001600160a81b03191617600160a01b83838111156100795761007961011f565b02179055505050610135565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100e857600080fd5b82516001600160a01b03811681146100ff57600080fd5b60208401519092506003811061011457600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b613932806101446000396000f3fe60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a264697066735822122001cf4dad4e3b8669662a3414bbd23a6ede2a3734f393956c3e5288072fe553ab64736f6c634300081c0033", - "deployedBytecode": "0x60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a264697066735822122001cf4dad4e3b8669662a3414bbd23a6ede2a3734f393956c3e5288072fe553ab64736f6c634300081c0033", + "bytecode": "0x608060405234801561001057600080fd5b50604051613a76380380613a7683398101604081905261002f916100d5565b61003833610085565b600280546001600160a01b0384166001600160a01b03198216811783558392916001600160a81b03191617600160a01b83838111156100795761007961011f565b02179055505050610135565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100e857600080fd5b82516001600160a01b03811681146100ff57600080fd5b60208401519092506003811061011457600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b613932806101446000396000f3fe60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a2646970667358221220f74e1602811cf79d6f3874cfdf6db36b761ea20fd228cc2a68a147dce4cf97e364736f6c634300081c0033", + "deployedBytecode": "0x60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a2646970667358221220f74e1602811cf79d6f3874cfdf6db36b761ea20fd228cc2a68a147dce4cf97e364736f6c634300081c0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/rust/lit-core/lit-blockchain-lite/src/contracts/pkp_helper.rs b/rust/lit-core/lit-blockchain-lite/src/contracts/pkp_helper.rs index b0e7cd9..581d83b 100644 --- a/rust/lit-core/lit-blockchain-lite/src/contracts/pkp_helper.rs +++ b/rust/lit-core/lit-blockchain-lite/src/contracts/pkp_helper.rs @@ -1434,13 +1434,13 @@ pub mod pkp_helper { __abi, ); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa:v8\x03\x80a:v\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\xD5V[a\083a\0\x85V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x82\x16\x81\x17\x83U\x83\x92\x91`\x01`\x01`\xA8\x1B\x03\x19\x16\x17`\x01`\xA0\x1B\x83\x83\x81\x11\x15a\0yWa\0ya\x01\x1FV[\x02\x17\x90UPPPa\x015V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\0\x80`@\x83\x85\x03\x12\x15a\0\xE8W`\0\x80\xFD[\x82Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xFFW`\0\x80\xFD[` \x84\x01Q\x90\x92P`\x03\x81\x10a\x01\x14W`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[a92\x80a\x01D`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \x01\xCFM\xADN;\x86if*4\x14\xBB\xD2:n\xDE*74\xF3\x93\x95l>R\x88\x07/\xE5S\xABdsolcC\0\x08\x1C\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa:v8\x03\x80a:v\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\xD5V[a\083a\0\x85V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x82\x16\x81\x17\x83U\x83\x92\x91`\x01`\x01`\xA8\x1B\x03\x19\x16\x17`\x01`\xA0\x1B\x83\x83\x81\x11\x15a\0yWa\0ya\x01\x1FV[\x02\x17\x90UPPPa\x015V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\0\x80`@\x83\x85\x03\x12\x15a\0\xE8W`\0\x80\xFD[\x82Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xFFW`\0\x80\xFD[` \x84\x01Q\x90\x92P`\x03\x81\x10a\x01\x14W`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[a92\x80a\x01D`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \xF7N\x16\x02\x81\x1C\xF7\x9Do8t\xCF\xDFm\xB3kv\x1E\xA2\x0F\xD2(\xCC*h\xA1G\xDC\xE4\xCF\x97\xE3dsolcC\0\x08\x1C\x003"; /// The bytecode of the contract. pub static PKPHELPER_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( __BYTECODE, ); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \x01\xCFM\xADN;\x86if*4\x14\xBB\xD2:n\xDE*74\xF3\x93\x95l>R\x88\x07/\xE5S\xABdsolcC\0\x08\x1C\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \xF7N\x16\x02\x81\x1C\xF7\x9Do8t\xCF\xDFm\xB3kv\x1E\xA2\x0F\xD2(\xCC*h\xA1G\xDC\xE4\xCF\x97\xE3dsolcC\0\x08\x1C\x003"; /// The deployed bytecode of the contract. pub static PKPHELPER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( __DEPLOYED_BYTECODE, diff --git a/rust/lit-core/lit-blockchain/abis/PKPHelper.json b/rust/lit-core/lit-blockchain/abis/PKPHelper.json index d21fad7..4798457 100644 --- a/rust/lit-core/lit-blockchain/abis/PKPHelper.json +++ b/rust/lit-core/lit-blockchain/abis/PKPHelper.json @@ -1007,8 +1007,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50604051613a76380380613a7683398101604081905261002f916100d5565b61003833610085565b600280546001600160a01b0384166001600160a01b03198216811783558392916001600160a81b03191617600160a01b83838111156100795761007961011f565b02179055505050610135565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100e857600080fd5b82516001600160a01b03811681146100ff57600080fd5b60208401519092506003811061011457600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b613932806101446000396000f3fe60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a26469706673582212209beb99f3ca4ca81d916f5f794cc06753e4c40d6ee549675381235e82d85c883f64736f6c634300081c0033", - "deployedBytecode": "0x60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a26469706673582212209beb99f3ca4ca81d916f5f794cc06753e4c40d6ee549675381235e82d85c883f64736f6c634300081c0033", + "bytecode": "0x608060405234801561001057600080fd5b50604051613a76380380613a7683398101604081905261002f916100d5565b61003833610085565b600280546001600160a01b0384166001600160a01b03198216811783558392916001600160a81b03191617600160a01b83838111156100795761007961011f565b02179055505050610135565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100e857600080fd5b82516001600160a01b03811681146100ff57600080fd5b60208401519092506003811061011457600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b613932806101446000396000f3fe60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a2646970667358221220f74e1602811cf79d6f3874cfdf6db36b761ea20fd228cc2a68a147dce4cf97e364736f6c634300081c0033", + "deployedBytecode": "0x60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a2646970667358221220f74e1602811cf79d6f3874cfdf6db36b761ea20fd228cc2a68a147dce4cf97e364736f6c634300081c0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/rust/lit-core/lit-blockchain/src/contracts/pkp_helper.rs b/rust/lit-core/lit-blockchain/src/contracts/pkp_helper.rs index 8f76b9f..6a96ef2 100644 --- a/rust/lit-core/lit-blockchain/src/contracts/pkp_helper.rs +++ b/rust/lit-core/lit-blockchain/src/contracts/pkp_helper.rs @@ -1416,13 +1416,13 @@ pub mod pkp_helper { __abi, ); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa:v8\x03\x80a:v\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\xD5V[a\083a\0\x85V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x82\x16\x81\x17\x83U\x83\x92\x91`\x01`\x01`\xA8\x1B\x03\x19\x16\x17`\x01`\xA0\x1B\x83\x83\x81\x11\x15a\0yWa\0ya\x01\x1FV[\x02\x17\x90UPPPa\x015V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\0\x80`@\x83\x85\x03\x12\x15a\0\xE8W`\0\x80\xFD[\x82Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xFFW`\0\x80\xFD[` \x84\x01Q\x90\x92P`\x03\x81\x10a\x01\x14W`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[a92\x80a\x01D`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \x01\xCFM\xADN;\x86if*4\x14\xBB\xD2:n\xDE*74\xF3\x93\x95l>R\x88\x07/\xE5S\xABdsolcC\0\x08\x1C\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa:v8\x03\x80a:v\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\xD5V[a\083a\0\x85V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x82\x16\x81\x17\x83U\x83\x92\x91`\x01`\x01`\xA8\x1B\x03\x19\x16\x17`\x01`\xA0\x1B\x83\x83\x81\x11\x15a\0yWa\0ya\x01\x1FV[\x02\x17\x90UPPPa\x015V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\0\x80`@\x83\x85\x03\x12\x15a\0\xE8W`\0\x80\xFD[\x82Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xFFW`\0\x80\xFD[` \x84\x01Q\x90\x92P`\x03\x81\x10a\x01\x14W`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[a92\x80a\x01D`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \xF7N\x16\x02\x81\x1C\xF7\x9Do8t\xCF\xDFm\xB3kv\x1E\xA2\x0F\xD2(\xCC*h\xA1G\xDC\xE4\xCF\x97\xE3dsolcC\0\x08\x1C\x003"; /// The bytecode of the contract. pub static PKPHELPER_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( __BYTECODE, ); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \x01\xCFM\xADN;\x86if*4\x14\xBB\xD2:n\xDE*74\xF3\x93\x95l>R\x88\x07/\xE5S\xABdsolcC\0\x08\x1C\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \xF7N\x16\x02\x81\x1C\xF7\x9Do8t\xCF\xDFm\xB3kv\x1E\xA2\x0F\xD2(\xCC*h\xA1G\xDC\xE4\xCF\x97\xE3dsolcC\0\x08\x1C\x003"; /// The deployed bytecode of the contract. pub static PKPHELPER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( __DEPLOYED_BYTECODE, From fc092f4cd112fe5284ef101986f499896d7cafef Mon Sep 17 00:00:00 2001 From: Howard Tam Date: Tue, 2 Dec 2025 20:55:39 -0800 Subject: [PATCH 17/18] Fix build --- rust/lit-node/lit-node/src/peers/peer_state/listener.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rust/lit-node/lit-node/src/peers/peer_state/listener.rs b/rust/lit-node/lit-node/src/peers/peer_state/listener.rs index 6c3c763..ea64258 100644 --- a/rust/lit-node/lit-node/src/peers/peer_state/listener.rs +++ b/rust/lit-node/lit-node/src/peers/peer_state/listener.rs @@ -55,7 +55,7 @@ impl PeerState { } } } - StakingEvents::RequestToJoinFilter(request_to_join_event) => { + StakingEvents::RequestToJoin1Filter(request_to_join_event) => { // update chain data manager state match self.chain_data_config_manager.set_peer_and_epoch_data_from_chain().await { Ok(_) => { From 3a9d9ec26fe1589b8f2fe38258b828ba340425ef Mon Sep 17 00:00:00 2001 From: Howard Date: Wed, 3 Dec 2025 14:04:14 -0500 Subject: [PATCH 18/18] Update ABIs and rust bindings --- rust/lit-core/lit-blockchain-lite/abis/PKPHelper.json | 4 ++-- rust/lit-core/lit-blockchain-lite/src/contracts/pkp_helper.rs | 4 ++-- rust/lit-core/lit-blockchain/abis/PKPHelper.json | 4 ++-- rust/lit-core/lit-blockchain/src/contracts/pkp_helper.rs | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/rust/lit-core/lit-blockchain-lite/abis/PKPHelper.json b/rust/lit-core/lit-blockchain-lite/abis/PKPHelper.json index 4798457..30e7839 100644 --- a/rust/lit-core/lit-blockchain-lite/abis/PKPHelper.json +++ b/rust/lit-core/lit-blockchain-lite/abis/PKPHelper.json @@ -1007,8 +1007,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50604051613a76380380613a7683398101604081905261002f916100d5565b61003833610085565b600280546001600160a01b0384166001600160a01b03198216811783558392916001600160a81b03191617600160a01b83838111156100795761007961011f565b02179055505050610135565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100e857600080fd5b82516001600160a01b03811681146100ff57600080fd5b60208401519092506003811061011457600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b613932806101446000396000f3fe60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a2646970667358221220f74e1602811cf79d6f3874cfdf6db36b761ea20fd228cc2a68a147dce4cf97e364736f6c634300081c0033", - "deployedBytecode": "0x60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a2646970667358221220f74e1602811cf79d6f3874cfdf6db36b761ea20fd228cc2a68a147dce4cf97e364736f6c634300081c0033", + "bytecode": "0x608060405234801561001057600080fd5b50604051613a76380380613a7683398101604081905261002f916100d5565b61003833610085565b600280546001600160a01b0384166001600160a01b03198216811783558392916001600160a81b03191617600160a01b83838111156100795761007961011f565b02179055505050610135565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100e857600080fd5b82516001600160a01b03811681146100ff57600080fd5b60208401519092506003811061011457600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b613932806101446000396000f3fe60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a2646970667358221220b84754906be061a4e57017620b2ecb199c071a02c5773eb64d98c17a9930778c64736f6c634300081c0033", + "deployedBytecode": "0x60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a2646970667358221220b84754906be061a4e57017620b2ecb199c071a02c5773eb64d98c17a9930778c64736f6c634300081c0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/rust/lit-core/lit-blockchain-lite/src/contracts/pkp_helper.rs b/rust/lit-core/lit-blockchain-lite/src/contracts/pkp_helper.rs index 581d83b..4c96b51 100644 --- a/rust/lit-core/lit-blockchain-lite/src/contracts/pkp_helper.rs +++ b/rust/lit-core/lit-blockchain-lite/src/contracts/pkp_helper.rs @@ -1434,13 +1434,13 @@ pub mod pkp_helper { __abi, ); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa:v8\x03\x80a:v\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\xD5V[a\083a\0\x85V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x82\x16\x81\x17\x83U\x83\x92\x91`\x01`\x01`\xA8\x1B\x03\x19\x16\x17`\x01`\xA0\x1B\x83\x83\x81\x11\x15a\0yWa\0ya\x01\x1FV[\x02\x17\x90UPPPa\x015V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\0\x80`@\x83\x85\x03\x12\x15a\0\xE8W`\0\x80\xFD[\x82Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xFFW`\0\x80\xFD[` \x84\x01Q\x90\x92P`\x03\x81\x10a\x01\x14W`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[a92\x80a\x01D`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \xF7N\x16\x02\x81\x1C\xF7\x9Do8t\xCF\xDFm\xB3kv\x1E\xA2\x0F\xD2(\xCC*h\xA1G\xDC\xE4\xCF\x97\xE3dsolcC\0\x08\x1C\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa:v8\x03\x80a:v\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\xD5V[a\083a\0\x85V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x82\x16\x81\x17\x83U\x83\x92\x91`\x01`\x01`\xA8\x1B\x03\x19\x16\x17`\x01`\xA0\x1B\x83\x83\x81\x11\x15a\0yWa\0ya\x01\x1FV[\x02\x17\x90UPPPa\x015V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\0\x80`@\x83\x85\x03\x12\x15a\0\xE8W`\0\x80\xFD[\x82Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xFFW`\0\x80\xFD[` \x84\x01Q\x90\x92P`\x03\x81\x10a\x01\x14W`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[a92\x80a\x01D`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \xB8GT\x90k\xE0a\xA4\xE5p\x17b\x0B.\xCB\x19\x9C\x07\x1A\x02\xC5w>\xB6M\x98\xC1z\x990w\x8CdsolcC\0\x08\x1C\x003"; /// The bytecode of the contract. pub static PKPHELPER_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( __BYTECODE, ); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \xF7N\x16\x02\x81\x1C\xF7\x9Do8t\xCF\xDFm\xB3kv\x1E\xA2\x0F\xD2(\xCC*h\xA1G\xDC\xE4\xCF\x97\xE3dsolcC\0\x08\x1C\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \xB8GT\x90k\xE0a\xA4\xE5p\x17b\x0B.\xCB\x19\x9C\x07\x1A\x02\xC5w>\xB6M\x98\xC1z\x990w\x8CdsolcC\0\x08\x1C\x003"; /// The deployed bytecode of the contract. pub static PKPHELPER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( __DEPLOYED_BYTECODE, diff --git a/rust/lit-core/lit-blockchain/abis/PKPHelper.json b/rust/lit-core/lit-blockchain/abis/PKPHelper.json index 4798457..30e7839 100644 --- a/rust/lit-core/lit-blockchain/abis/PKPHelper.json +++ b/rust/lit-core/lit-blockchain/abis/PKPHelper.json @@ -1007,8 +1007,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50604051613a76380380613a7683398101604081905261002f916100d5565b61003833610085565b600280546001600160a01b0384166001600160a01b03198216811783558392916001600160a81b03191617600160a01b83838111156100795761007961011f565b02179055505050610135565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100e857600080fd5b82516001600160a01b03811681146100ff57600080fd5b60208401519092506003811061011457600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b613932806101446000396000f3fe60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a2646970667358221220f74e1602811cf79d6f3874cfdf6db36b761ea20fd228cc2a68a147dce4cf97e364736f6c634300081c0033", - "deployedBytecode": "0x60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a2646970667358221220f74e1602811cf79d6f3874cfdf6db36b761ea20fd228cc2a68a147dce4cf97e364736f6c634300081c0033", + "bytecode": "0x608060405234801561001057600080fd5b50604051613a76380380613a7683398101604081905261002f916100d5565b61003833610085565b600280546001600160a01b0384166001600160a01b03198216811783558392916001600160a81b03191617600160a01b83838111156100795761007961011f565b02179055505050610135565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600080604083850312156100e857600080fd5b82516001600160a01b03811681146100ff57600080fd5b60208401519092506003811061011457600080fd5b809150509250929050565b634e487b7160e01b600052602160045260246000fd5b613932806101446000396000f3fe60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a2646970667358221220b84754906be061a4e57017620b2ecb199c071a02c5773eb64d98c17a9930778c64736f6c634300081c0033", + "deployedBytecode": "0x60806040526004361061014c5760003560e01c806373cc4111116100bc57806373cc4111146102f6578063778fe5721461030b578063782e2ea51461031e5780638da5cb5b1461033e57806391d148541461035357806391ee4fd5146103735780639dca003214610386578063a217fddf146103b4578063caead0c7146103c9578063d547741f146103de578063db0bf933146103fe578063e4f11df614610411578063f2fde38b14610424578063f95d71b11461044457600080fd5b806301ffc9a7146101515780630e9ed68b1461018657806313af411b146101a8578063150b7a02146101c9578063202f724f14610202578063248a9ca3146102155780632b553551146102355780632f2ff15d146102575780633276558c1461027757806336568abe1461028c5780635043026c146102ac57806350d17b5e146102c1578063715018a6146102e1575b600080fd5b34801561015d57600080fd5b5061017161016c366004612598565b610464565b60405190151581526020015b60405180910390f35b34801561019257600080fd5b5061019b61049b565b60405161017d91906125c2565b6101bb6101b6366004612b84565b610586565b60405190815260200161017d565b3480156101d557600080fd5b506101e96101e4366004612c32565b610603565b6040516001600160e01b0319909116815260200161017d565b6101bb610210366004612b84565b6106a7565b34801561022157600080fd5b506101bb610230366004612cd1565b6106ba565b34801561024157600080fd5b50610255610250366004612cd1565b6106d0565b005b34801561026357600080fd5b50610255610272366004612cea565b6108ab565b34801561028357600080fd5b5061019b6108cc565b34801561029857600080fd5b506102556102a7366004612cea565b61091e565b3480156102b857600080fd5b5061019b61099c565b3480156102cd57600080fd5b5060025461019b906001600160a01b031681565b3480156102ed57600080fd5b506102556109ee565b34801561030257600080fd5b5061019b610a02565b6101bb610319366004612d3a565b610a54565b34801561032a57600080fd5b50610255610339366004612fb8565b611066565b34801561034a57600080fd5b5061019b611289565b34801561035f57600080fd5b5061017161036e366004612cea565b611298565b6101bb610381366004612ff4565b6112c3565b34801561039257600080fd5b506002546103a790600160a01b900460ff1681565b60405161017d91906130f0565b3480156103c057600080fd5b506101bb600081565b3480156103d557600080fd5b5061019b611965565b3480156103ea57600080fd5b506102556103f9366004612cea565b6119b7565b6101bb61040c3660046130fe565b6119d3565b6101bb61041f36600461323b565b611fdd565b34801561043057600080fd5b5061025561043f36600461334d565b612130565b34801561045057600080fd5b5061025561045f36600461334d565b6121a9565b60006001600160e01b03198216637965db0b60e01b148061049557506301ffc9a760e01b6001600160e01b03198316145b92915050565b6002546040805163da19ddfb60e01b815290516000926001600160a01b031691638e8dfd1691839163da19ddfb9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610511919061336a565b60025460405160e084901b6001600160e01b03191681526105409291600160a01b900460ff1690600401613383565b602060405180830381865afa15801561055d573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105819190613397565b905090565b6000806040518060a00160405280856000015181526020016040518060400160405280600c81526020016b6e6167612d6b65797365743160a01b815250815260200185602001518152602001856040015181526020016105e461049b565b6001600160a01b0316905290506105fb81846112c3565b949350505050565b600061060d611965565b6001600160a01b0316336001600160a01b0316146106955760405162461bcd60e51b815260206004820152603a60248201527f504b5048656c7065723a206f6e6c792061636365707473207472616e736665726044820152791cc8199c9bdb481d1a19481412d41391950818dbdb9d1c9858dd60321b60648201526084015b60405180910390fd5b50630a85bd0160e11b95945050505050565b60006106b38383610586565b9392505050565b6000908152600160208190526040909120015490565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa158015610722573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610746919061336a565b60025460405160e084901b6001600160e01b03191681526107759291600160a01b900460ff1690600401613383565b602060405180830381865afa158015610792573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906107b69190613397565b6001600160a01b0316336001600160a01b0316146107e65760405162461bcd60e51b815260040161068c906133b4565b60006107f061099c565b60405163b63a767760e01b8152600481018490529091506001600160a01b0382169063b63a767790602401600060405180830381600087803b15801561083557600080fd5b505af1158015610849573d6000803e3d6000fd5b50506040516328cd10c760e11b8152600481018590526001600160a01b038416925063519a218e9150602401600060405180830381600087803b15801561088f57600080fd5b505af11580156108a3573d6000803e3d6000fd5b505050505050565b6108b4826106ba565b6108bd81612207565b6108c78383612211565b505050565b6002546040805163120e5f0760e31b815290516000926001600160a01b031691638e8dfd16918391639072f8389160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6001600160a01b038116331461098e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b606482015260840161068c565b610998828261227c565b5050565b600254604080516316f76bbf60e01b815290516000926001600160a01b031691638e8dfd169183916316f76bbf9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6109f66122e3565b610a006000612342565b565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b600080610a5f611965565b83516020850151604051633ff8069760e11b81526001600160a01b039390931692637ff00d2e923492610a9492600401613484565b60206040518083038185885af1158015610ab2573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610ad7919061336a565b905082606001515183604001515114610b025760405162461bcd60e51b815260040161068c9061349d565b8260a001515183608001515114610b2b5760405162461bcd60e51b815260040161068c906134f3565b8260e00151518360c001515114610b545760405162461bcd60e51b815260040161068c90613548565b826101000151518360c001515114610b7e5760405162461bcd60e51b815260040161068c90613591565b826101200151518360c001515114610ba85760405162461bcd60e51b815260040161068c906135dc565b60408301515115610c745760005b836040015151811015610c7257610bcb6108cc565b6001600160a01b0316638a4315788386604001518481518110610bf057610bf0613627565b602002602001015187606001518581518110610c0e57610c0e613627565b60200260200101516040518463ffffffff1660e01b8152600401610c3493929190613679565b600060405180830381600087803b158015610c4e57600080fd5b505af1158015610c62573d6000803e3d6000fd5b505060019092019150610bb69050565b505b60808301515115610d405760005b836080015151811015610d3e57610c976108cc565b6001600160a01b0316631663c1218386608001518481518110610cbc57610cbc613627565b60200260200101518760a001518581518110610cda57610cda613627565b60200260200101516040518463ffffffff1660e01b8152600401610d00939291906136ae565b600060405180830381600087803b158015610d1a57600080fd5b505af1158015610d2e573d6000803e3d6000fd5b505060019092019150610c829050565b505b60c08301515115610e625760005b8360c0015151811015610e6057610d636108cc565b6001600160a01b0316639dd4349b8360405180606001604052808860c001518681518110610d9357610d93613627565b602002602001015181526020018860e001518681518110610db657610db6613627565b602002602001015181526020018861010001518681518110610dda57610dda613627565b60200260200101518152508761012001518581518110610dfc57610dfc613627565b60200260200101516040518463ffffffff1660e01b8152600401610e22939291906136e1565b600060405180830381600087803b158015610e3c57600080fd5b505af1158015610e50573d6000803e3d6000fd5b505060019092019150610d4e9050565b505b6000610e6c6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401610e9991815260200190565b602060405180830381865afa158015610eb6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eda9190613397565b905083610140015115610f7c57610eef6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015610f2a578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401610f49939291906136ae565b600060405180830381600087803b158015610f6357600080fd5b505af1158015610f77573d6000803e3d6000fd5b505050505b83610160015115610ff557610f8f611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401610fbe9392919061373f565b600060405180830381600087803b158015610fd857600080fd5b505af1158015610fec573d6000803e3d6000fd5b5050505061105f565b610ffd611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b815260040161102c9392919061373f565b600060405180830381600087803b15801561104657600080fd5b505af115801561105a573d6000803e3d6000fd5b505050505b5092915050565b6002546040805163210b739d60e11b815290516001600160a01b0390921691638e8dfd16918391634216e73a916004808201926020929091908290030181865afa1580156110b8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110dc919061336a565b60025460405160e084901b6001600160e01b031916815261110b9291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611128573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061114c9190613397565b6001600160a01b0316336001600160a01b03161461117c5760405162461bcd60e51b815260040161068c906133b4565b600061118661099c565b8251909150156108c757806001600160a01b031663855eec2284846000815181106111b3576111b3613627565b60200260200101516040518363ffffffff1660e01b81526004016111d8929190613484565b600060405180830381600087803b1580156111f257600080fd5b505af1158015611206573d6000803e3d6000fd5b50505050806001600160a01b0316639000fee1848460018151811061122d5761122d613627565b60200260200101516040518363ffffffff1660e01b8152600401611252929190613484565b600060405180830381600087803b15801561126c57600080fd5b505af1158015611280573d6000803e3d6000fd5b50505050505050565b6000546001600160a01b031690565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b805182516000911461133d5760405162461bcd60e51b815260206004820152603e60248201527f504b5048656c7065723a20436c61696d206b65792074797065206d757374206d60448201527f617463682041757468204d6574686f642064617461206b657920747970650000606482015260840161068c565b60016000611349611965565b6001600160a01b03166371aa9acf3484886000015189602001518a604001518b606001518c608001516040518863ffffffff1660e01b815260040161139396959493929190613763565b60206040518083038185885af11580156113b1573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113d6919061336a565b9050836040015151846020015151146114015760405162461bcd60e51b815260040161068c9061349d565b8360800151518460600151511461142a5760405162461bcd60e51b815260040161068c906134f3565b8360c00151518460a0015151146114535760405162461bcd60e51b815260040161068c90613548565b8360e00151518460a00151511461147c5760405162461bcd60e51b815260040161068c90613591565b836101000151518460a0015151146114a65760405162461bcd60e51b815260040161068c906135dc565b602084015151156115725760005b846020015151811015611570576114c96108cc565b6001600160a01b0316638a43157883876020015184815181106114ee576114ee613627565b60200260200101518860400151858151811061150c5761150c613627565b60200260200101516040518463ffffffff1660e01b815260040161153293929190613679565b600060405180830381600087803b15801561154c57600080fd5b505af1158015611560573d6000803e3d6000fd5b5050600190920191506114b49050565b505b6060840151511561163e5760005b84606001515181101561163c576115956108cc565b6001600160a01b0316631663c12183876060015184815181106115ba576115ba613627565b6020026020010151886080015185815181106115d8576115d8613627565b60200260200101516040518463ffffffff1660e01b81526004016115fe939291906136ae565b600060405180830381600087803b15801561161857600080fd5b505af115801561162c573d6000803e3d6000fd5b5050600190920191506115809050565b505b60a0840151511561175f5760005b8460a001515181101561175d576116616108cc565b6001600160a01b0316639dd4349b8360405180606001604052808960a00151868151811061169157611691613627565b602002602001015181526020018960c0015186815181106116b4576116b4613627565b602002602001015181526020018960e0015186815181106116d7576116d7613627565b602002602001015181525088610100015185815181106116f9576116f9613627565b60200260200101516040518463ffffffff1660e01b815260040161171f939291906136e1565b600060405180830381600087803b15801561173957600080fd5b505af115801561174d573d6000803e3d6000fd5b50506001909201915061164c9050565b505b60006117696108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b815260040161179691815260200190565b602060405180830381865afa1580156117b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117d79190613397565b905084610120015115611879576117ec6108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611827578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611846939291906136ae565b600060405180830381600087803b15801561186057600080fd5b505af1158015611874573d6000803e3d6000fd5b505050505b846101400151156118f25761188c611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b81526004016118bb9392919061373f565b600060405180830381600087803b1580156118d557600080fd5b505af11580156118e9573d6000803e3d6000fd5b5050505061195c565b6118fa611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b81526004016119299392919061373f565b600060405180830381600087803b15801561194357600080fd5b505af1158015611957573d6000803e3d6000fd5b505050505b50949350505050565b60025460408051632c0b8bf760e01b815290516000926001600160a01b031691638e8dfd16918391632c0b8bf79160048083019260209291908290030181865afa1580156104ed573d6000803e3d6000fd5b6119c0826106ba565b6119c981612207565b6108c7838361227c565b6002546040805163210b739d60e11b815290516000926001600160a01b031691638e8dfd16918391634216e73a9160048083019260209291908290030181865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a49919061336a565b60025460405160e084901b6001600160e01b0319168152611a789291600160a01b900460ff1690600401613383565b602060405180830381865afa158015611a95573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ab99190613397565b6001600160a01b0316336001600160a01b031614611ae95760405162461bcd60e51b815260040161068c906133b4565b6000611af3611965565b6001600160a01b0316637ff00d2e348d8d6040518463ffffffff1660e01b8152600401611b21929190613484565b60206040518083038185885af1158015611b3f573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611b64919061336a565b90508751895114611b875760405162461bcd60e51b815260040161068c90613548565b8651895114611ba85760405162461bcd60e51b815260040161068c90613591565b8551895114611bc95760405162461bcd60e51b815260040161068c906135dc565b885115611cd15760005b8951811015611ccf57611be46108cc565b6001600160a01b0316639dd4349b8360405180606001604052808e8681518110611c1057611c10613627565b602002602001015181526020018d8681518110611c2f57611c2f613627565b602002602001015181526020018c8681518110611c4e57611c4e613627565b60200260200101518152508a8581518110611c6b57611c6b613627565b60200260200101516040518463ffffffff1660e01b8152600401611c91939291906136e1565b600060405180830381600087803b158015611cab57600080fd5b505af1158015611cbf573d6000803e3d6000fd5b505060019092019150611bd39050565b505b6000611cdb6108cc565b6001600160a01b031663bd4986a0836040518263ffffffff1660e01b8152600401611d0891815260200190565b602060405180830381865afa158015611d25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d499190613397565b90508415611de657611d596108cc565b6001600160a01b0316631663c12183836000604051908082528060200260200182016040528015611d94578160200160208202803683370190505b506040518463ffffffff1660e01b8152600401611db3939291906136ae565b600060405180830381600087803b158015611dcd57600080fd5b505af1158015611de1573d6000803e3d6000fd5b505050505b8315611e5a57611df4611965565b6001600160a01b03166342842e0e3083856040518463ffffffff1660e01b8152600401611e239392919061373f565b600060405180830381600087803b158015611e3d57600080fd5b505af1158015611e51573d6000803e3d6000fd5b50505050611ec4565b611e62611965565b6001600160a01b03166342842e0e3033856040518463ffffffff1660e01b8152600401611e919392919061373f565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b505050505b855115611fce57611ed361099c565b6001600160a01b031663855eec228388600081518110611ef557611ef5613627565b60200260200101516040518363ffffffff1660e01b8152600401611f1a929190613484565b600060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b50505050611f5461099c565b6001600160a01b0316639000fee18388600181518110611f7657611f76613627565b60200260200101516040518363ffffffff1660e01b8152600401611f9b929190613484565b600060405180830381600087803b158015611fb557600080fd5b505af1158015611fc9573d6000803e3d6000fd5b505050505b509a9950505050505050505050565b6000806040518061018001604052808b81526020018a815260200160006001600160401b03811115612011576120116125d6565b60405190808252806020026020018201604052801561204457816020015b606081526020019060019003908161202f5790505b508152602001600060405190808252806020026020018201604052801561207f57816020015b606081526020019060019003908161206a5790505b50815260200160006040519080825280602002602001820160405280156120b0578160200160208202803683370190505b50815260200160006040519080825280602002602001820160405280156120eb57816020015b60608152602001906001900390816120d65790505b5081526020018981526020018881526020018781526020018681526020018515158152602001841515815250905061212281610a54565b9a9950505050505050505050565b6121386122e3565b6001600160a01b03811661219d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161068c565b6121a681612342565b50565b6121b16122e3565b600280546001600160a01b0319166001600160a01b0383161790556040517f2760073c7cd8cac531d7f643becbfbb74d8b8156443eacf879622532dbbb3cd5906121fc9083906125c2565b60405180910390a150565b6121a68133612392565b61221b8282611298565b6109985760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6122868282611298565b156109985760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b336122ec611289565b6001600160a01b031614610a005760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161068c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61239c8282611298565b610998576123a9816123eb565b6123b48360206123fd565b6040516020016123c5929190613803565b60408051601f198184030181529082905262461bcd60e51b825261068c91600401613872565b60606104956001600160a01b03831660145b6060600061240c83600261389b565b6124179060026138b2565b6001600160401b0381111561242e5761242e6125d6565b6040519080825280601f01601f191660200182016040528015612458576020820181803683370190505b509050600360fc1b8160008151811061247357612473613627565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106124a2576124a2613627565b60200101906001600160f81b031916908160001a90535060006124c684600261389b565b6124d19060016138b2565b90505b6001811115612549576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811061250557612505613627565b1a60f81b82828151811061251b5761251b613627565b60200101906001600160f81b031916908160001a90535060049490941c93612542816138c5565b90506124d4565b5083156106b35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e74604482015260640161068c565b6000602082840312156125aa57600080fd5b81356001600160e01b0319811681146106b357600080fd5b6001600160a01b0391909116815260200190565b634e487b7160e01b600052604160045260246000fd5b604051606081016001600160401b038111828210171561260e5761260e6125d6565b60405290565b60405161016081016001600160401b038111828210171561260e5761260e6125d6565b60405161018081016001600160401b038111828210171561260e5761260e6125d6565b60405160a081016001600160401b038111828210171561260e5761260e6125d6565b604051601f8201601f191681016001600160401b03811182821017156126a4576126a46125d6565b604052919050565b60006001600160401b038211156126c5576126c56125d6565b5060051b60200190565b600082601f8301126126e057600080fd5b81356126f36126ee826126ac565b61267c565b8082825260208201915060206060840286010192508583111561271557600080fd5b602085015b83811015612771576060818803121561273257600080fd5b61273a6125ec565b8135815260208083013590820152604082013560ff8116811461275c57600080fd5b6040820152835260209092019160600161271a565b5095945050505050565b6000806001600160401b03841115612795576127956125d6565b50601f8301601f19166020016127aa8161267c565b9150508281528383830111156127bf57600080fd5b828260208301376000602084830101529392505050565b600082601f8301126127e757600080fd5b81356127f56126ee826126ac565b8082825260208201915060208360051b86010192508583111561281757600080fd5b602085015b838110156127715780356001600160401b0381111561283a57600080fd5b8601603f8101881361284b57600080fd5b61285d8860208301356040840161277b565b8452506020928301920161281c565b600082601f83011261287d57600080fd5b813561288b6126ee826126ac565b8082825260208201915060208360051b8601019250858311156128ad57600080fd5b602085015b838110156127715780358352602092830192016128b2565b600082601f8301126128db57600080fd5b81356128e96126ee826126ac565b8082825260208201915060208360051b86010192508583111561290b57600080fd5b602085015b838110156127715780356001600160401b0381111561292e57600080fd5b61293d886020838a010161286c565b84525060209283019201612910565b6001600160a01b03811681146121a657600080fd5b600082601f83011261297257600080fd5b81356129806126ee826126ac565b8082825260208201915060208360051b8601019250858311156129a257600080fd5b602085015b838110156127715780356129ba8161294c565b8352602092830192016129a7565b803580151581146129d857600080fd5b919050565b600061016082840312156129f057600080fd5b6129f8612614565b82358152905060208201356001600160401b03811115612a1757600080fd5b612a23848285016127d6565b60208301525060408201356001600160401b03811115612a4257600080fd5b612a4e848285016128ca565b60408301525060608201356001600160401b03811115612a6d57600080fd5b612a7984828501612961565b60608301525060808201356001600160401b03811115612a9857600080fd5b612aa4848285016128ca565b60808301525060a08201356001600160401b03811115612ac357600080fd5b612acf8482850161286c565b60a08301525060c08201356001600160401b03811115612aee57600080fd5b612afa848285016127d6565b60c08301525060e08201356001600160401b03811115612b1957600080fd5b612b25848285016127d6565b60e0830152506101008201356001600160401b03811115612b4557600080fd5b612b51848285016128ca565b61010083015250612b6561012083016129c8565b610120820152612b7861014083016129c8565b61014082015292915050565b60008060408385031215612b9757600080fd5b82356001600160401b03811115612bad57600080fd5b830160608186031215612bbf57600080fd5b612bc76125ec565b813581526020808301359082015260408201356001600160401b03811115612bee57600080fd5b612bfa878285016126cf565b60408301525092505060208301356001600160401b03811115612c1c57600080fd5b612c28858286016129dd565b9150509250929050565b600080600080600060808688031215612c4a57600080fd5b8535612c558161294c565b94506020860135612c658161294c565b93506040860135925060608601356001600160401b03811115612c8757600080fd5b8601601f81018813612c9857600080fd5b80356001600160401b03811115612cae57600080fd5b886020828401011115612cc057600080fd5b959894975092955050506020019190565b600060208284031215612ce357600080fd5b5035919050565b60008060408385031215612cfd57600080fd5b823591506020830135612d0f8161294c565b809150509250929050565b600082601f830112612d2b57600080fd5b6106b38383356020850161277b565b600060208284031215612d4c57600080fd5b81356001600160401b03811115612d6257600080fd5b82016101808185031215612d7557600080fd5b612d7d612637565b8135815260208201356001600160401b03811115612d9a57600080fd5b612da686828501612d1a565b60208301525060408201356001600160401b03811115612dc557600080fd5b612dd1868285016127d6565b60408301525060608201356001600160401b03811115612df057600080fd5b612dfc868285016128ca565b60608301525060808201356001600160401b03811115612e1b57600080fd5b612e2786828501612961565b60808301525060a08201356001600160401b03811115612e4657600080fd5b612e52868285016128ca565b60a08301525060c08201356001600160401b03811115612e7157600080fd5b612e7d8682850161286c565b60c08301525060e08201356001600160401b03811115612e9c57600080fd5b612ea8868285016127d6565b60e0830152506101008201356001600160401b03811115612ec857600080fd5b612ed4868285016127d6565b610100830152506101208201356001600160401b03811115612ef557600080fd5b612f01868285016128ca565b61012083015250612f1561014083016129c8565b610140820152612f2861016083016129c8565b610160820152949350505050565b600082601f830112612f4757600080fd5b8135612f556126ee826126ac565b8082825260208201915060208360051b860101925085831115612f7757600080fd5b602085015b838110156127715780356001600160401b03811115612f9a57600080fd5b612fa9886020838a0101612d1a565b84525060209283019201612f7c565b60008060408385031215612fcb57600080fd5b8235915060208301356001600160401b03811115612fe857600080fd5b612c2885828601612f36565b6000806040838503121561300757600080fd5b82356001600160401b0381111561301d57600080fd5b830160a0818603121561302f57600080fd5b61303761265a565b8135815260208201356001600160401b0381111561305457600080fd5b61306087828501612d1a565b6020830152506040828101359082015260608201356001600160401b0381111561308957600080fd5b613095878285016126cf565b606083015250608082013591506130ab8261294c565b6080810191909152915060208301356001600160401b03811115612c1c57600080fd5b600381106130ec57634e487b7160e01b600052602160045260246000fd5b9052565b6020810161049582846130ce565b60008060008060008060008060006101208a8c03121561311d57600080fd5b8935985060208a01356001600160401b0381111561313a57600080fd5b6131468c828d01612d1a565b98505060408a01356001600160401b0381111561316257600080fd5b61316e8c828d0161286c565b97505060608a01356001600160401b0381111561318a57600080fd5b6131968c828d016127d6565b96505060808a01356001600160401b038111156131b257600080fd5b6131be8c828d016127d6565b95505060a08a01356001600160401b038111156131da57600080fd5b6131e68c828d016128ca565b94505060c08a01356001600160401b0381111561320257600080fd5b61320e8c828d01612f36565b93505061321d60e08b016129c8565b915061322c6101008b016129c8565b90509295985092959850929598565b600080600080600080600080610100898b03121561325857600080fd5b8835975060208901356001600160401b0381111561327557600080fd5b6132818b828c01612d1a565b97505060408901356001600160401b0381111561329d57600080fd5b6132a98b828c0161286c565b96505060608901356001600160401b038111156132c557600080fd5b6132d18b828c016127d6565b95505060808901356001600160401b038111156132ed57600080fd5b6132f98b828c016127d6565b94505060a08901356001600160401b0381111561331557600080fd5b6133218b828c016128ca565b93505061333060c08a016129c8565b915061333e60e08a016129c8565b90509295985092959890939650565b60006020828403121561335f57600080fd5b81356106b38161294c565b60006020828403121561337c57600080fd5b5051919050565b828152604081016106b360208301846130ce565b6000602082840312156133a957600080fd5b81516106b38161294c565b6020808252605a908201527f504b5048656c7065723a206f6e6c792074686520446f6d61696e2057616c6c6560408201527f7420726567697374727920697320616c6c6f77656420746f206d696e7420646f6060820152796d61696e2077616c6c6574732c2077686f2061726520796f753f60301b608082015260a00190565b60005b8381101561344f578181015183820152602001613437565b50506000910152565b60008151808452613470816020860160208601613434565b601f01601f19169290920160200192915050565b8281526040602082015260006105fb6040830184613458565b60208082526036908201527f504b5048656c7065723a20697066732063696420616e642073636f70652061726040820152750e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d60531b606082015260800190565b60208082526035908201527f504b5048656c7065723a206164647265737320616e642073636f7065206172726040820152740c2f240d8cadccee8d0e640daeae6e840dac2e8c6d605b1b606082015260800190565b6020808252603b908201526000805160206138dd83398151915260408201527a0d2c840c2e4e4c2f240d8cadccee8d0e640daeae6e840dac2e8c6d602b1b606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f7075626b6579206172726179206c656e67746873206d757374206d6174636800606082015260800190565b6020808252603f908201526000805160206138dd83398151915260408201527f73636f706573206172726179206c656e67746873206d757374206d6174636800606082015260800190565b634e487b7160e01b600052603260045260246000fd5b600081518084526020840193506020830160005b8281101561366f578151865260209586019590910190600101613651565b5093949350505050565b8381526060602082015260006136926060830185613458565b82810360408401526136a4818561363d565b9695505050505050565b8381526001600160a01b03831660208201526060604082018190526000906136d89083018461363d565b95945050505050565b8381526060602082015282516060820152600060208401516060608084015261370d60c0840182613458565b90506040850151605f198483030160a085015261372a8282613458565b91505082810360408401526136a4818561363d565b6001600160a01b039384168152919092166020820152604081019190915260600190565b86815285602082015260c06040820152600061378260c0830187613458565b6060830186905282810360808401528451808252602080870192019060005b818110156137de578351805184526020810151602085015260ff6040820151166040850152506060830192506020840193506001810190506137a1565b50506001600160a01b03851660a085015291506137f89050565b979650505050505050565b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351613835816017850160208801613434565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613866816028840160208801613434565b01602801949350505050565b6020815260006106b36020830184613458565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141761049557610495613885565b8082018082111561049557610495613885565b6000816138d4576138d4613885565b50600019019056fe504b5048656c7065723a2061757468206d6574686f64207479706520616e6420a2646970667358221220b84754906be061a4e57017620b2ecb199c071a02c5773eb64d98c17a9930778c64736f6c634300081c0033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/rust/lit-core/lit-blockchain/src/contracts/pkp_helper.rs b/rust/lit-core/lit-blockchain/src/contracts/pkp_helper.rs index 6a96ef2..0829634 100644 --- a/rust/lit-core/lit-blockchain/src/contracts/pkp_helper.rs +++ b/rust/lit-core/lit-blockchain/src/contracts/pkp_helper.rs @@ -1416,13 +1416,13 @@ pub mod pkp_helper { __abi, ); #[rustfmt::skip] - const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa:v8\x03\x80a:v\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\xD5V[a\083a\0\x85V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x82\x16\x81\x17\x83U\x83\x92\x91`\x01`\x01`\xA8\x1B\x03\x19\x16\x17`\x01`\xA0\x1B\x83\x83\x81\x11\x15a\0yWa\0ya\x01\x1FV[\x02\x17\x90UPPPa\x015V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\0\x80`@\x83\x85\x03\x12\x15a\0\xE8W`\0\x80\xFD[\x82Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xFFW`\0\x80\xFD[` \x84\x01Q\x90\x92P`\x03\x81\x10a\x01\x14W`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[a92\x80a\x01D`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \xF7N\x16\x02\x81\x1C\xF7\x9Do8t\xCF\xDFm\xB3kv\x1E\xA2\x0F\xD2(\xCC*h\xA1G\xDC\xE4\xCF\x97\xE3dsolcC\0\x08\x1C\x003"; + const __BYTECODE: &[u8] = b"`\x80`@R4\x80\x15a\0\x10W`\0\x80\xFD[P`@Qa:v8\x03\x80a:v\x839\x81\x01`@\x81\x90Ra\0/\x91a\0\xD5V[a\083a\0\x85V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x84\x16`\x01`\x01`\xA0\x1B\x03\x19\x82\x16\x81\x17\x83U\x83\x92\x91`\x01`\x01`\xA8\x1B\x03\x19\x16\x17`\x01`\xA0\x1B\x83\x83\x81\x11\x15a\0yWa\0ya\x01\x1FV[\x02\x17\x90UPPPa\x015V[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[`\0\x80`@\x83\x85\x03\x12\x15a\0\xE8W`\0\x80\xFD[\x82Q`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\0\xFFW`\0\x80\xFD[` \x84\x01Q\x90\x92P`\x03\x81\x10a\x01\x14W`\0\x80\xFD[\x80\x91PP\x92P\x92\x90PV[cNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[a92\x80a\x01D`\09`\0\xF3\xFE`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \xB8GT\x90k\xE0a\xA4\xE5p\x17b\x0B.\xCB\x19\x9C\x07\x1A\x02\xC5w>\xB6M\x98\xC1z\x990w\x8CdsolcC\0\x08\x1C\x003"; /// The bytecode of the contract. pub static PKPHELPER_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( __BYTECODE, ); #[rustfmt::skip] - const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \xF7N\x16\x02\x81\x1C\xF7\x9Do8t\xCF\xDFm\xB3kv\x1E\xA2\x0F\xD2(\xCC*h\xA1G\xDC\xE4\xCF\x97\xE3dsolcC\0\x08\x1C\x003"; + const __DEPLOYED_BYTECODE: &[u8] = b"`\x80`@R`\x046\x10a\x01LW`\x005`\xE0\x1C\x80cs\xCCA\x11\x11a\0\xBCW\x80cs\xCCA\x11\x14a\x02\xF6W\x80cw\x8F\xE5r\x14a\x03\x0BW\x80cx..\xA5\x14a\x03\x1EW\x80c\x8D\xA5\xCB[\x14a\x03>W\x80c\x91\xD1HT\x14a\x03SW\x80c\x91\xEEO\xD5\x14a\x03sW\x80c\x9D\xCA\x002\x14a\x03\x86W\x80c\xA2\x17\xFD\xDF\x14a\x03\xB4W\x80c\xCA\xEA\xD0\xC7\x14a\x03\xC9W\x80c\xD5Gt\x1F\x14a\x03\xDEW\x80c\xDB\x0B\xF93\x14a\x03\xFEW\x80c\xE4\xF1\x1D\xF6\x14a\x04\x11W\x80c\xF2\xFD\xE3\x8B\x14a\x04$W\x80c\xF9]q\xB1\x14a\x04DW`\0\x80\xFD[\x80c\x01\xFF\xC9\xA7\x14a\x01QW\x80c\x0E\x9E\xD6\x8B\x14a\x01\x86W\x80c\x13\xAFA\x1B\x14a\x01\xA8W\x80c\x15\x0Bz\x02\x14a\x01\xC9W\x80c /rO\x14a\x02\x02W\x80c$\x8A\x9C\xA3\x14a\x02\x15W\x80c+U5Q\x14a\x025W\x80c//\xF1]\x14a\x02WW\x80c2vU\x8C\x14a\x02wW\x80c6V\x8A\xBE\x14a\x02\x8CW\x80cPC\x02l\x14a\x02\xACW\x80cP\xD1{^\x14a\x02\xC1W\x80cqP\x18\xA6\x14a\x02\xE1W[`\0\x80\xFD[4\x80\x15a\x01]W`\0\x80\xFD[Pa\x01qa\x01l6`\x04a%\x98V[a\x04dV[`@Q\x90\x15\x15\x81R` \x01[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x01\x92W`\0\x80\xFD[Pa\x01\x9Ba\x04\x9BV[`@Qa\x01}\x91\x90a%\xC2V[a\x01\xBBa\x01\xB66`\x04a+\x84V[a\x05\x86V[`@Q\x90\x81R` \x01a\x01}V[4\x80\x15a\x01\xD5W`\0\x80\xFD[Pa\x01\xE9a\x01\xE46`\x04a,2V[a\x06\x03V[`@Q`\x01`\x01`\xE0\x1B\x03\x19\x90\x91\x16\x81R` \x01a\x01}V[a\x01\xBBa\x02\x106`\x04a+\x84V[a\x06\xA7V[4\x80\x15a\x02!W`\0\x80\xFD[Pa\x01\xBBa\x0206`\x04a,\xD1V[a\x06\xBAV[4\x80\x15a\x02AW`\0\x80\xFD[Pa\x02Ua\x02P6`\x04a,\xD1V[a\x06\xD0V[\0[4\x80\x15a\x02cW`\0\x80\xFD[Pa\x02Ua\x02r6`\x04a,\xEAV[a\x08\xABV[4\x80\x15a\x02\x83W`\0\x80\xFD[Pa\x01\x9Ba\x08\xCCV[4\x80\x15a\x02\x98W`\0\x80\xFD[Pa\x02Ua\x02\xA76`\x04a,\xEAV[a\t\x1EV[4\x80\x15a\x02\xB8W`\0\x80\xFD[Pa\x01\x9Ba\t\x9CV[4\x80\x15a\x02\xCDW`\0\x80\xFD[P`\x02Ta\x01\x9B\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[4\x80\x15a\x02\xEDW`\0\x80\xFD[Pa\x02Ua\t\xEEV[4\x80\x15a\x03\x02W`\0\x80\xFD[Pa\x01\x9Ba\n\x02V[a\x01\xBBa\x03\x196`\x04a-:V[a\nTV[4\x80\x15a\x03*W`\0\x80\xFD[Pa\x02Ua\x0396`\x04a/\xB8V[a\x10fV[4\x80\x15a\x03JW`\0\x80\xFD[Pa\x01\x9Ba\x12\x89V[4\x80\x15a\x03_W`\0\x80\xFD[Pa\x01qa\x03n6`\x04a,\xEAV[a\x12\x98V[a\x01\xBBa\x03\x816`\x04a/\xF4V[a\x12\xC3V[4\x80\x15a\x03\x92W`\0\x80\xFD[P`\x02Ta\x03\xA7\x90`\x01`\xA0\x1B\x90\x04`\xFF\x16\x81V[`@Qa\x01}\x91\x90a0\xF0V[4\x80\x15a\x03\xC0W`\0\x80\xFD[Pa\x01\xBB`\0\x81V[4\x80\x15a\x03\xD5W`\0\x80\xFD[Pa\x01\x9Ba\x19eV[4\x80\x15a\x03\xEAW`\0\x80\xFD[Pa\x02Ua\x03\xF96`\x04a,\xEAV[a\x19\xB7V[a\x01\xBBa\x04\x0C6`\x04a0\xFEV[a\x19\xD3V[a\x01\xBBa\x04\x1F6`\x04a2;V[a\x1F\xDDV[4\x80\x15a\x040W`\0\x80\xFD[Pa\x02Ua\x04?6`\x04a3MV[a!0V[4\x80\x15a\x04PW`\0\x80\xFD[Pa\x02Ua\x04_6`\x04a3MV[a!\xA9V[`\0`\x01`\x01`\xE0\x1B\x03\x19\x82\x16cye\xDB\x0B`\xE0\x1B\x14\x80a\x04\x95WPc\x01\xFF\xC9\xA7`\xE0\x1B`\x01`\x01`\xE0\x1B\x03\x19\x83\x16\x14[\x92\x91PPV[`\x02T`@\x80Qc\xDA\x19\xDD\xFB`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\xDA\x19\xDD\xFB\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x11\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x05@\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x05]W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x05\x81\x91\x90a3\x97V[\x90P\x90V[`\0\x80`@Q\x80`\xA0\x01`@R\x80\x85`\0\x01Q\x81R` \x01`@Q\x80`@\x01`@R\x80`\x0C\x81R` \x01knaga-keyset1`\xA0\x1B\x81RP\x81R` \x01\x85` \x01Q\x81R` \x01\x85`@\x01Q\x81R` \x01a\x05\xE4a\x04\x9BV[`\x01`\x01`\xA0\x1B\x03\x16\x90R\x90Pa\x05\xFB\x81\x84a\x12\xC3V[\x94\x93PPPPV[`\0a\x06\ra\x19eV[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x06\x95W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`:`$\x82\x01R\x7FPKPHelper: only accepts transfer`D\x82\x01Ry\x1C\xC8\x19\x9C\x9B\xDBH\x1D\x1A\x19H\x14\x12\xD4\x13\x91\x95\x08\x18\xDB\xDB\x9D\x1C\x98X\xDD`2\x1B`d\x82\x01R`\x84\x01[`@Q\x80\x91\x03\x90\xFD[Pc\n\x85\xBD\x01`\xE1\x1B\x95\x94PPPPPV[`\0a\x06\xB3\x83\x83a\x05\x86V[\x93\x92PPPV[`\0\x90\x81R`\x01` \x81\x90R`@\x90\x91 \x01T\x90V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x07\"W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07F\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x07u\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x07\x92W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x07\xB6\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x07\xE6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x07\xF0a\t\x9CV[`@Qc\xB6:vw`\xE0\x1B\x81R`\x04\x81\x01\x84\x90R\x90\x91P`\x01`\x01`\xA0\x1B\x03\x82\x16\x90c\xB6:vw\x90`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x085W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08IW=`\0\x80>=`\0\xFD[PP`@Qc(\xCD\x10\xC7`\xE1\x1B\x81R`\x04\x81\x01\x85\x90R`\x01`\x01`\xA0\x1B\x03\x84\x16\x92PcQ\x9A!\x8E\x91P`$\x01`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x08\x8FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x08\xA3W=`\0\x80>=`\0\xFD[PPPPPPV[a\x08\xB4\x82a\x06\xBAV[a\x08\xBD\x81a\"\x07V[a\x08\xC7\x83\x83a\"\x11V[PPPV[`\x02T`@\x80Qc\x12\x0E_\x07`\xE3\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x90r\xF88\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\x01`\x01`\xA0\x1B\x03\x81\x163\x14a\t\x8EW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`/`$\x82\x01R\x7FAccessControl: can only renounce`D\x82\x01Rn\x1097\xB62\xB9\x9037\xB9\x109\xB2\xB63`\x89\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a\t\x98\x82\x82a\"|V[PPV[`\x02T`@\x80Qc\x16\xF7k\xBF`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c\x16\xF7k\xBF\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\t\xF6a\"\xE3V[a\n\0`\0a#BV[V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[`\0\x80a\n_a\x19eV[\x83Q` \x85\x01Q`@Qc?\xF8\x06\x97`\xE1\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x92c\x7F\xF0\r.\x924\x92a\n\x94\x92`\x04\x01a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\n\xB2W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\n\xD7\x91\x90a3jV[\x90P\x82``\x01QQ\x83`@\x01QQ\x14a\x0B\x02W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x82`\xA0\x01QQ\x83`\x80\x01QQ\x14a\x0B+W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x82`\xE0\x01QQ\x83`\xC0\x01QQ\x14a\x0BTW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x82a\x01\0\x01QQ\x83`\xC0\x01QQ\x14a\x0B~W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x82a\x01 \x01QQ\x83`\xC0\x01QQ\x14a\x0B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[`@\x83\x01QQ\x15a\x0CtW`\0[\x83`@\x01QQ\x81\x10\x15a\x0CrWa\x0B\xCBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x86`@\x01Q\x84\x81Q\x81\x10a\x0B\xF0Wa\x0B\xF0a6'V[` \x02` \x01\x01Q\x87``\x01Q\x85\x81Q\x81\x10a\x0C\x0EWa\x0C\x0Ea6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0C4\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0CNW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0CbW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0B\xB6\x90PV[P[`\x80\x83\x01QQ\x15a\r@W`\0[\x83`\x80\x01QQ\x81\x10\x15a\r>Wa\x0C\x97a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x86`\x80\x01Q\x84\x81Q\x81\x10a\x0C\xBCWa\x0C\xBCa6'V[` \x02` \x01\x01Q\x87`\xA0\x01Q\x85\x81Q\x81\x10a\x0C\xDAWa\x0C\xDAa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\r\0\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\r\x1AW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\r.W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x0C\x82\x90PV[P[`\xC0\x83\x01QQ\x15a\x0EbW`\0[\x83`\xC0\x01QQ\x81\x10\x15a\x0E`Wa\rca\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x88`\xC0\x01Q\x86\x81Q\x81\x10a\r\x93Wa\r\x93a6'V[` \x02` \x01\x01Q\x81R` \x01\x88`\xE0\x01Q\x86\x81Q\x81\x10a\r\xB6Wa\r\xB6a6'V[` \x02` \x01\x01Q\x81R` \x01\x88a\x01\0\x01Q\x86\x81Q\x81\x10a\r\xDAWa\r\xDAa6'V[` \x02` \x01\x01Q\x81RP\x87a\x01 \x01Q\x85\x81Q\x81\x10a\r\xFCWa\r\xFCa6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\"\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0E=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\rN\x90PV[P[`\0a\x0Ela\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0E\x99\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x0E\xB6W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x0E\xDA\x91\x90a3\x97V[\x90P\x83a\x01@\x01Q\x15a\x0F|Wa\x0E\xEFa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x0F*W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0FI\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0FcW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0FwW=`\0\x80>=`\0\xFD[PPPP[\x83a\x01`\x01Q\x15a\x0F\xF5Wa\x0F\x8Fa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x0F\xBE\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x0F\xD8W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x0F\xECW=`\0\x80>=`\0\xFD[PPPPa\x10_V[a\x0F\xFDa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x10,\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x10FW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x10ZW=`\0\x80>=`\0\xFD[PPPP[P\x92\x91PPV[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\x01`\x01`\xA0\x1B\x03\x90\x92\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x82\x01\x92` \x92\x90\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x10\xB8W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x10\xDC\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x11\x0B\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x11(W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x11L\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x11|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x11\x86a\t\x9CV[\x82Q\x90\x91P\x15a\x08\xC7W\x80`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x84\x84`\0\x81Q\x81\x10a\x11\xB3Wa\x11\xB3a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x11\xD8\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x11\xF2W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x06W=`\0\x80>=`\0\xFD[PPPP\x80`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x84\x84`\x01\x81Q\x81\x10a\x12-Wa\x12-a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x12R\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x12lW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x12\x80W=`\0\x80>=`\0\xFD[PPPPPPPV[`\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\0\x91\x82R`\x01` \x90\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x93\x90\x93\x16\x84R\x91\x90R\x90 T`\xFF\x16\x90V[\x80Q\x82Q`\0\x91\x14a\x13=W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`>`$\x82\x01R\x7FPKPHelper: Claim key type must m`D\x82\x01R\x7Fatch Auth Method data key type\0\0`d\x82\x01R`\x84\x01a\x06\x8CV[`\x01`\0a\x13Ia\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cq\xAA\x9A\xCF4\x84\x88`\0\x01Q\x89` \x01Q\x8A`@\x01Q\x8B``\x01Q\x8C`\x80\x01Q`@Q\x88c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x13\x93\x96\x95\x94\x93\x92\x91\x90a7cV[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x13\xB1W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x13\xD6\x91\x90a3jV[\x90P\x83`@\x01QQ\x84` \x01QQ\x14a\x14\x01W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\x9DV[\x83`\x80\x01QQ\x84``\x01QQ\x14a\x14*W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a4\xF3V[\x83`\xC0\x01QQ\x84`\xA0\x01QQ\x14a\x14SW`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x83`\xE0\x01QQ\x84`\xA0\x01QQ\x14a\x14|W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x83a\x01\0\x01QQ\x84`\xA0\x01QQ\x14a\x14\xA6W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[` \x84\x01QQ\x15a\x15rW`\0[\x84` \x01QQ\x81\x10\x15a\x15pWa\x14\xC9a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x8AC\x15x\x83\x87` \x01Q\x84\x81Q\x81\x10a\x14\xEEWa\x14\xEEa6'V[` \x02` \x01\x01Q\x88`@\x01Q\x85\x81Q\x81\x10a\x15\x0CWa\x15\x0Ca6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x152\x93\x92\x91\x90a6yV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x15LW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x15`W=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x14\xB4\x90PV[P[``\x84\x01QQ\x15a\x16>W`\0[\x84``\x01QQ\x81\x10\x15a\x16=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x15\x80\x90PV[P[`\xA0\x84\x01QQ\x15a\x17_W`\0[\x84`\xA0\x01QQ\x81\x10\x15a\x17]Wa\x16aa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x89`\xA0\x01Q\x86\x81Q\x81\x10a\x16\x91Wa\x16\x91a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xC0\x01Q\x86\x81Q\x81\x10a\x16\xB4Wa\x16\xB4a6'V[` \x02` \x01\x01Q\x81R` \x01\x89`\xE0\x01Q\x86\x81Q\x81\x10a\x16\xD7Wa\x16\xD7a6'V[` \x02` \x01\x01Q\x81RP\x88a\x01\0\x01Q\x85\x81Q\x81\x10a\x16\xF9Wa\x16\xF9a6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x1F\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x179W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x17MW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x16L\x90PV[P[`\0a\x17ia\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x17\x96\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x17\xB3W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x17\xD7\x91\x90a3\x97V[\x90P\x84a\x01 \x01Q\x15a\x18yWa\x17\xECa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x18'W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18F\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18`W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18tW=`\0\x80>=`\0\xFD[PPPP[\x84a\x01@\x01Q\x15a\x18\xF2Wa\x18\x8Ca\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x18\xBB\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x18\xD5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x18\xE9W=`\0\x80>=`\0\xFD[PPPPa\x19\\V[a\x18\xFAa\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x19)\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x19CW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x19WW=`\0\x80>=`\0\xFD[PPPP[P\x94\x93PPPPV[`\x02T`@\x80Qc,\x0B\x8B\xF7`\xE0\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91c,\x0B\x8B\xF7\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x04\xEDW=`\0\x80>=`\0\xFD[a\x19\xC0\x82a\x06\xBAV[a\x19\xC9\x81a\"\x07V[a\x08\xC7\x83\x83a\"|V[`\x02T`@\x80Qc!\x0Bs\x9D`\xE1\x1B\x81R\x90Q`\0\x92`\x01`\x01`\xA0\x1B\x03\x16\x91c\x8E\x8D\xFD\x16\x91\x83\x91cB\x16\xE7:\x91`\x04\x80\x83\x01\x92` \x92\x91\x90\x82\x90\x03\x01\x81\x86Z\xFA\x15\x80\x15a\x1A%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1AI\x91\x90a3jV[`\x02T`@Q`\xE0\x84\x90\x1B`\x01`\x01`\xE0\x1B\x03\x19\x16\x81Ra\x1Ax\x92\x91`\x01`\xA0\x1B\x90\x04`\xFF\x16\x90`\x04\x01a3\x83V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1A\x95W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1A\xB9\x91\x90a3\x97V[`\x01`\x01`\xA0\x1B\x03\x163`\x01`\x01`\xA0\x1B\x03\x16\x14a\x1A\xE9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a3\xB4V[`\0a\x1A\xF3a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16c\x7F\xF0\r.4\x8D\x8D`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1B!\x92\x91\x90a4\x84V[` `@Q\x80\x83\x03\x81\x85\x88Z\xF1\x15\x80\x15a\x1B?W=`\0\x80>=`\0\xFD[PPPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1Bd\x91\x90a3jV[\x90P\x87Q\x89Q\x14a\x1B\x87W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5HV[\x86Q\x89Q\x14a\x1B\xA8W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\x91V[\x85Q\x89Q\x14a\x1B\xC9W`@QbF\x1B\xCD`\xE5\x1B\x81R`\x04\x01a\x06\x8C\x90a5\xDCV[\x88Q\x15a\x1C\xD1W`\0[\x89Q\x81\x10\x15a\x1C\xCFWa\x1B\xE4a\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x9D\xD44\x9B\x83`@Q\x80``\x01`@R\x80\x8E\x86\x81Q\x81\x10a\x1C\x10Wa\x1C\x10a6'V[` \x02` \x01\x01Q\x81R` \x01\x8D\x86\x81Q\x81\x10a\x1C/Wa\x1C/a6'V[` \x02` \x01\x01Q\x81R` \x01\x8C\x86\x81Q\x81\x10a\x1CNWa\x1CNa6'V[` \x02` \x01\x01Q\x81RP\x8A\x85\x81Q\x81\x10a\x1CkWa\x1Cka6'V[` \x02` \x01\x01Q`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1C\x91\x93\x92\x91\x90a6\xE1V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1C\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1C\xBFW=`\0\x80>=`\0\xFD[PP`\x01\x90\x92\x01\x91Pa\x1B\xD3\x90PV[P[`\0a\x1C\xDBa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\xBDI\x86\xA0\x83`@Q\x82c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\x08\x91\x81R` \x01\x90V[` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\x1D%W=`\0\x80>=`\0\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1DI\x91\x90a3\x97V[\x90P\x84\x15a\x1D\xE6Wa\x1DYa\x08\xCCV[`\x01`\x01`\xA0\x1B\x03\x16c\x16c\xC1!\x83\x83`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a\x1D\x94W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1D\xB3\x93\x92\x91\x90a6\xAEV[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1D\xCDW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1D\xE1W=`\0\x80>=`\0\xFD[PPPP[\x83\x15a\x1EZWa\x1D\xF4a\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E0\x83\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E#\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E=W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1EQW=`\0\x80>=`\0\xFD[PPPPa\x1E\xC4V[a\x1Eba\x19eV[`\x01`\x01`\xA0\x1B\x03\x16cB\x84.\x0E03\x85`@Q\x84c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1E\x91\x93\x92\x91\x90a7?V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1E\xABW`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1E\xBFW=`\0\x80>=`\0\xFD[PPPP[\x85Q\x15a\x1F\xCEWa\x1E\xD3a\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x85^\xEC\"\x83\x88`\0\x81Q\x81\x10a\x1E\xF5Wa\x1E\xF5a6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x1A\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F4W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1FHW=`\0\x80>=`\0\xFD[PPPPa\x1FTa\t\x9CV[`\x01`\x01`\xA0\x1B\x03\x16c\x90\0\xFE\xE1\x83\x88`\x01\x81Q\x81\x10a\x1FvWa\x1Fva6'V[` \x02` \x01\x01Q`@Q\x83c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01a\x1F\x9B\x92\x91\x90a4\x84V[`\0`@Q\x80\x83\x03\x81`\0\x87\x80;\x15\x80\x15a\x1F\xB5W`\0\x80\xFD[PZ\xF1\x15\x80\x15a\x1F\xC9W=`\0\x80>=`\0\xFD[PPPP[P\x9A\x99PPPPPPPPPPV[`\0\x80`@Q\x80a\x01\x80\x01`@R\x80\x8B\x81R` \x01\x8A\x81R` \x01`\0`\x01`\x01`@\x1B\x03\x81\x11\x15a \x11Wa \x11a%\xD6V[`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a DW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a /W\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \x7FW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a jW\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xB0W\x81` \x01` \x82\x02\x806\x837\x01\x90P[P\x81R` \x01`\0`@Q\x90\x80\x82R\x80` \x02` \x01\x82\x01`@R\x80\x15a \xEBW\x81` \x01[``\x81R` \x01\x90`\x01\x90\x03\x90\x81a \xD6W\x90P[P\x81R` \x01\x89\x81R` \x01\x88\x81R` \x01\x87\x81R` \x01\x86\x81R` \x01\x85\x15\x15\x81R` \x01\x84\x15\x15\x81RP\x90Pa!\"\x81a\nTV[\x9A\x99PPPPPPPPPPV[a!8a\"\xE3V[`\x01`\x01`\xA0\x1B\x03\x81\x16a!\x9DW`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01R`&`$\x82\x01R\x7FOwnable: new owner is the zero a`D\x82\x01Reddress`\xD0\x1B`d\x82\x01R`\x84\x01a\x06\x8CV[a!\xA6\x81a#BV[PV[a!\xB1a\"\xE3V[`\x02\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x17\x90U`@Q\x7F'`\x07<|\xD8\xCA\xC51\xD7\xF6C\xBE\xCB\xFB\xB7M\x8B\x81VD>\xAC\xF8yb%2\xDB\xBB<\xD5\x90a!\xFC\x90\x83\x90a%\xC2V[`@Q\x80\x91\x03\x90\xA1PV[a!\xA6\x813a#\x92V[a\"\x1B\x82\x82a\x12\x98V[a\t\x98W`\0\x82\x81R`\x01` \x81\x81R`@\x80\x84 `\x01`\x01`\xA0\x1B\x03\x86\x16\x80\x86R\x92R\x80\x84 \x80T`\xFF\x19\x16\x90\x93\x17\x90\x92U\x90Q3\x92\x85\x91\x7F/\x87\x88\x11~~\xFF\x1D\x82\xE9&\xECyI\x01\xD1|x\x02JP'\t@0E@\xA73eo\r\x91\x90\xA4PPV[a\"\x86\x82\x82a\x12\x98V[\x15a\t\x98W`\0\x82\x81R`\x01` \x90\x81R`@\x80\x83 `\x01`\x01`\xA0\x1B\x03\x85\x16\x80\x85R\x92R\x80\x83 \x80T`\xFF\x19\x16\x90UQ3\x92\x85\x91\x7F\xF69\x1F\\2\xD9\xC6\x9D*G\xEAg\x0BD)t\xB595\xD1\xED\xC7\xFDd\xEB!\xE0G\xA89\x17\x1B\x91\x90\xA4PPV[3a\"\xECa\x12\x89V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\0W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FOwnable: caller is not the owner`D\x82\x01R`d\x01a\x06\x8CV[`\0\x80T`\x01`\x01`\xA0\x1B\x03\x83\x81\x16`\x01`\x01`\xA0\x1B\x03\x19\x83\x16\x81\x17\x84U`@Q\x91\x90\x92\x16\x92\x83\x91\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x91\x90\xA3PPV[a#\x9C\x82\x82a\x12\x98V[a\t\x98Wa#\xA9\x81a#\xEBV[a#\xB4\x83` a#\xFDV[`@Q` \x01a#\xC5\x92\x91\x90a8\x03V[`@\x80Q`\x1F\x19\x81\x84\x03\x01\x81R\x90\x82\x90RbF\x1B\xCD`\xE5\x1B\x82Ra\x06\x8C\x91`\x04\x01a8rV[``a\x04\x95`\x01`\x01`\xA0\x1B\x03\x83\x16`\x14[```\0a$\x0C\x83`\x02a8\x9BV[a$\x17\x90`\x02a8\xB2V[`\x01`\x01`@\x1B\x03\x81\x11\x15a$.Wa$.a%\xD6V[`@Q\x90\x80\x82R\x80`\x1F\x01`\x1F\x19\x16` \x01\x82\x01`@R\x80\x15a$XW` \x82\x01\x81\x806\x837\x01\x90P[P\x90P`\x03`\xFC\x1B\x81`\0\x81Q\x81\x10a$sWa$sa6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x0F`\xFB\x1B\x81`\x01\x81Q\x81\x10a$\xA2Wa$\xA2a6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\0a$\xC6\x84`\x02a8\x9BV[a$\xD1\x90`\x01a8\xB2V[\x90P[`\x01\x81\x11\x15a%IWo\x18\x18\x99\x19\x9A\x1A\x9B\x1B\x9C\x1C\xB0\xB11\xB22\xB3`\x81\x1B\x85`\x0F\x16`\x10\x81\x10a%\x05Wa%\x05a6'V[\x1A`\xF8\x1B\x82\x82\x81Q\x81\x10a%\x1BWa%\x1Ba6'V[` \x01\x01\x90`\x01`\x01`\xF8\x1B\x03\x19\x16\x90\x81`\0\x1A\x90SP`\x04\x94\x90\x94\x1C\x93a%B\x81a8\xC5V[\x90Pa$\xD4V[P\x83\x15a\x06\xB3W`@QbF\x1B\xCD`\xE5\x1B\x81R` `\x04\x82\x01\x81\x90R`$\x82\x01R\x7FStrings: hex length insufficient`D\x82\x01R`d\x01a\x06\x8CV[`\0` \x82\x84\x03\x12\x15a%\xAAW`\0\x80\xFD[\x815`\x01`\x01`\xE0\x1B\x03\x19\x81\x16\x81\x14a\x06\xB3W`\0\x80\xFD[`\x01`\x01`\xA0\x1B\x03\x91\x90\x91\x16\x81R` \x01\x90V[cNH{q`\xE0\x1B`\0R`A`\x04R`$`\0\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@R\x90V[`@Qa\x01`\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Qa\x01\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\xA0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\x0EWa&\x0Ea%\xD6V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a&\xA4Wa&\xA4a%\xD6V[`@R\x91\x90PV[`\0`\x01`\x01`@\x1B\x03\x82\x11\x15a&\xC5Wa&\xC5a%\xD6V[P`\x05\x1B` \x01\x90V[`\0\x82`\x1F\x83\x01\x12a&\xE0W`\0\x80\xFD[\x815a&\xF3a&\xEE\x82a&\xACV[a&|V[\x80\x82\x82R` \x82\x01\x91P` ``\x84\x02\x86\x01\x01\x92P\x85\x83\x11\x15a'\x15W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW``\x81\x88\x03\x12\x15a'2W`\0\x80\xFD[a':a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\xFF\x81\x16\x81\x14a'\\W`\0\x80\xFD[`@\x82\x01R\x83R` \x90\x92\x01\x91``\x01a'\x1AV[P\x95\x94PPPPPV[`\0\x80`\x01`\x01`@\x1B\x03\x84\x11\x15a'\x95Wa'\x95a%\xD6V[P`\x1F\x83\x01`\x1F\x19\x16` \x01a'\xAA\x81a&|V[\x91PP\x82\x81R\x83\x83\x83\x01\x11\x15a'\xBFW`\0\x80\xFD[\x82\x82` \x83\x017`\0` \x84\x83\x01\x01R\x93\x92PPPV[`\0\x82`\x1F\x83\x01\x12a'\xE7W`\0\x80\xFD[\x815a'\xF5a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\x17W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(:W`\0\x80\xFD[\x86\x01`?\x81\x01\x88\x13a(KW`\0\x80\xFD[a(]\x88` \x83\x015`@\x84\x01a'{V[\x84RP` \x92\x83\x01\x92\x01a(\x1CV[`\0\x82`\x1F\x83\x01\x12a(}W`\0\x80\xFD[\x815a(\x8Ba&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a(\xADW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805\x83R` \x92\x83\x01\x92\x01a(\xB2V[`\0\x82`\x1F\x83\x01\x12a(\xDBW`\0\x80\xFD[\x815a(\xE9a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\x0BW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a).W`\0\x80\xFD[a)=\x88` \x83\x8A\x01\x01a(lV[\x84RP` \x92\x83\x01\x92\x01a)\x10V[`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\xA6W`\0\x80\xFD[`\0\x82`\x1F\x83\x01\x12a)rW`\0\x80\xFD[\x815a)\x80a&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a)\xA2W`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805a)\xBA\x81a)LV[\x83R` \x92\x83\x01\x92\x01a)\xA7V[\x805\x80\x15\x15\x81\x14a)\xD8W`\0\x80\xFD[\x91\x90PV[`\0a\x01`\x82\x84\x03\x12\x15a)\xF0W`\0\x80\xFD[a)\xF8a&\x14V[\x825\x81R\x90P` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x17W`\0\x80\xFD[a*#\x84\x82\x85\x01a'\xD6V[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*BW`\0\x80\xFD[a*N\x84\x82\x85\x01a(\xCAV[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*mW`\0\x80\xFD[a*y\x84\x82\x85\x01a)aV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\x98W`\0\x80\xFD[a*\xA4\x84\x82\x85\x01a(\xCAV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xC3W`\0\x80\xFD[a*\xCF\x84\x82\x85\x01a(lV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a*\xEEW`\0\x80\xFD[a*\xFA\x84\x82\x85\x01a'\xD6V[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\x19W`\0\x80\xFD[a+%\x84\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+EW`\0\x80\xFD[a+Q\x84\x82\x85\x01a(\xCAV[a\x01\0\x83\x01RPa+ea\x01 \x83\x01a)\xC8V[a\x01 \x82\x01Ra+xa\x01@\x83\x01a)\xC8V[a\x01@\x82\x01R\x92\x91PPV[`\0\x80`@\x83\x85\x03\x12\x15a+\x97W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xADW`\0\x80\xFD[\x83\x01``\x81\x86\x03\x12\x15a+\xBFW`\0\x80\xFD[a+\xC7a%\xECV[\x815\x81R` \x80\x83\x015\x90\x82\x01R`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a+\xEEW`\0\x80\xFD[a+\xFA\x87\x82\x85\x01a&\xCFV[`@\x83\x01RP\x92PP` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[a,(\x85\x82\x86\x01a)\xDDV[\x91PP\x92P\x92\x90PV[`\0\x80`\0\x80`\0`\x80\x86\x88\x03\x12\x15a,JW`\0\x80\xFD[\x855a,U\x81a)LV[\x94P` \x86\x015a,e\x81a)LV[\x93P`@\x86\x015\x92P``\x86\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x87W`\0\x80\xFD[\x86\x01`\x1F\x81\x01\x88\x13a,\x98W`\0\x80\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xAEW`\0\x80\xFD[\x88` \x82\x84\x01\x01\x11\x15a,\xC0W`\0\x80\xFD[\x95\x98\x94\x97P\x92\x95PPP` \x01\x91\x90V[`\0` \x82\x84\x03\x12\x15a,\xE3W`\0\x80\xFD[P5\x91\x90PV[`\0\x80`@\x83\x85\x03\x12\x15a,\xFDW`\0\x80\xFD[\x825\x91P` \x83\x015a-\x0F\x81a)LV[\x80\x91PP\x92P\x92\x90PV[`\0\x82`\x1F\x83\x01\x12a-+W`\0\x80\xFD[a\x06\xB3\x83\x835` \x85\x01a'{V[`\0` \x82\x84\x03\x12\x15a-LW`\0\x80\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a-bW`\0\x80\xFD[\x82\x01a\x01\x80\x81\x85\x03\x12\x15a-uW`\0\x80\xFD[a-}a&7V[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\x9AW`\0\x80\xFD[a-\xA6\x86\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xC5W`\0\x80\xFD[a-\xD1\x86\x82\x85\x01a'\xD6V[`@\x83\x01RP``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-\xF0W`\0\x80\xFD[a-\xFC\x86\x82\x85\x01a(\xCAV[``\x83\x01RP`\x80\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x1BW`\0\x80\xFD[a.'\x86\x82\x85\x01a)aV[`\x80\x83\x01RP`\xA0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.FW`\0\x80\xFD[a.R\x86\x82\x85\x01a(\xCAV[`\xA0\x83\x01RP`\xC0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.qW`\0\x80\xFD[a.}\x86\x82\x85\x01a(lV[`\xC0\x83\x01RP`\xE0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\x9CW`\0\x80\xFD[a.\xA8\x86\x82\x85\x01a'\xD6V[`\xE0\x83\x01RPa\x01\0\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xC8W`\0\x80\xFD[a.\xD4\x86\x82\x85\x01a'\xD6V[a\x01\0\x83\x01RPa\x01 \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a.\xF5W`\0\x80\xFD[a/\x01\x86\x82\x85\x01a(\xCAV[a\x01 \x83\x01RPa/\x15a\x01@\x83\x01a)\xC8V[a\x01@\x82\x01Ra/(a\x01`\x83\x01a)\xC8V[a\x01`\x82\x01R\x94\x93PPPPV[`\0\x82`\x1F\x83\x01\x12a/GW`\0\x80\xFD[\x815a/Ua&\xEE\x82a&\xACV[\x80\x82\x82R` \x82\x01\x91P` \x83`\x05\x1B\x86\x01\x01\x92P\x85\x83\x11\x15a/wW`\0\x80\xFD[` \x85\x01[\x83\x81\x10\x15a'qW\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\x9AW`\0\x80\xFD[a/\xA9\x88` \x83\x8A\x01\x01a-\x1AV[\x84RP` \x92\x83\x01\x92\x01a/|V[`\0\x80`@\x83\x85\x03\x12\x15a/\xCBW`\0\x80\xFD[\x825\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xE8W`\0\x80\xFD[a,(\x85\x82\x86\x01a/6V[`\0\x80`@\x83\x85\x03\x12\x15a0\x07W`\0\x80\xFD[\x825`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x1DW`\0\x80\xFD[\x83\x01`\xA0\x81\x86\x03\x12\x15a0/W`\0\x80\xFD[a07a&ZV[\x815\x81R` \x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0TW`\0\x80\xFD[a0`\x87\x82\x85\x01a-\x1AV[` \x83\x01RP`@\x82\x81\x015\x90\x82\x01R``\x82\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a0\x89W`\0\x80\xFD[a0\x95\x87\x82\x85\x01a&\xCFV[``\x83\x01RP`\x80\x82\x015\x91Pa0\xAB\x82a)LV[`\x80\x81\x01\x91\x90\x91R\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\x1CW`\0\x80\xFD[`\x03\x81\x10a0\xECWcNH{q`\xE0\x1B`\0R`!`\x04R`$`\0\xFD[\x90RV[` \x81\x01a\x04\x95\x82\x84a0\xCEV[`\0\x80`\0\x80`\0\x80`\0\x80`\0a\x01 \x8A\x8C\x03\x12\x15a1\x1DW`\0\x80\xFD[\x895\x98P` \x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1:W`\0\x80\xFD[a1F\x8C\x82\x8D\x01a-\x1AV[\x98PP`@\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1bW`\0\x80\xFD[a1n\x8C\x82\x8D\x01a(lV[\x97PP``\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\x8AW`\0\x80\xFD[a1\x96\x8C\x82\x8D\x01a'\xD6V[\x96PP`\x80\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xB2W`\0\x80\xFD[a1\xBE\x8C\x82\x8D\x01a'\xD6V[\x95PP`\xA0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xDAW`\0\x80\xFD[a1\xE6\x8C\x82\x8D\x01a(\xCAV[\x94PP`\xC0\x8A\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x02W`\0\x80\xFD[a2\x0E\x8C\x82\x8D\x01a/6V[\x93PPa2\x1D`\xE0\x8B\x01a)\xC8V[\x91Pa2,a\x01\0\x8B\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98P\x92\x95\x98V[`\0\x80`\0\x80`\0\x80`\0\x80a\x01\0\x89\x8B\x03\x12\x15a2XW`\0\x80\xFD[\x885\x97P` \x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2uW`\0\x80\xFD[a2\x81\x8B\x82\x8C\x01a-\x1AV[\x97PP`@\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x9DW`\0\x80\xFD[a2\xA9\x8B\x82\x8C\x01a(lV[\x96PP``\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xC5W`\0\x80\xFD[a2\xD1\x8B\x82\x8C\x01a'\xD6V[\x95PP`\x80\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a2\xEDW`\0\x80\xFD[a2\xF9\x8B\x82\x8C\x01a'\xD6V[\x94PP`\xA0\x89\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a3\x15W`\0\x80\xFD[a3!\x8B\x82\x8C\x01a(\xCAV[\x93PPa30`\xC0\x8A\x01a)\xC8V[\x91Pa3>`\xE0\x8A\x01a)\xC8V[\x90P\x92\x95\x98P\x92\x95\x98\x90\x93\x96PV[`\0` \x82\x84\x03\x12\x15a3_W`\0\x80\xFD[\x815a\x06\xB3\x81a)LV[`\0` \x82\x84\x03\x12\x15a3|W`\0\x80\xFD[PQ\x91\x90PV[\x82\x81R`@\x81\x01a\x06\xB3` \x83\x01\x84a0\xCEV[`\0` \x82\x84\x03\x12\x15a3\xA9W`\0\x80\xFD[\x81Qa\x06\xB3\x81a)LV[` \x80\x82R`Z\x90\x82\x01R\x7FPKPHelper: only the Domain Walle`@\x82\x01R\x7Ft registry is allowed to mint do``\x82\x01Rymain wallets, who are you?`0\x1B`\x80\x82\x01R`\xA0\x01\x90V[`\0[\x83\x81\x10\x15a4OW\x81\x81\x01Q\x83\x82\x01R` \x01a47V[PP`\0\x91\x01RV[`\0\x81Q\x80\x84Ra4p\x81` \x86\x01` \x86\x01a44V[`\x1F\x01`\x1F\x19\x16\x92\x90\x92\x01` \x01\x92\x91PPV[\x82\x81R`@` \x82\x01R`\0a\x05\xFB`@\x83\x01\x84a4XV[` \x80\x82R`6\x90\x82\x01R\x7FPKPHelper: ipfs cid and scope ar`@\x82\x01Ru\x0EL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`S\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`5\x90\x82\x01R\x7FPKPHelper: address and scope arr`@\x82\x01Rt\x0C/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`[\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`;\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01Rz\r,\x84\x0C.NL/$\r\x8C\xAD\xCC\xEE\x8D\x0Ed\r\xAE\xAEn\x84\r\xAC.\x8Cm`+\x1B``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fpubkey array lengths must match\0``\x82\x01R`\x80\x01\x90V[` \x80\x82R`?\x90\x82\x01R`\0\x80Q` a8\xDD\x839\x81Q\x91R`@\x82\x01R\x7Fscopes array lengths must match\0``\x82\x01R`\x80\x01\x90V[cNH{q`\xE0\x1B`\0R`2`\x04R`$`\0\xFD[`\0\x81Q\x80\x84R` \x84\x01\x93P` \x83\x01`\0[\x82\x81\x10\x15a6oW\x81Q\x86R` \x95\x86\x01\x95\x90\x91\x01\x90`\x01\x01a6QV[P\x93\x94\x93PPPPV[\x83\x81R``` \x82\x01R`\0a6\x92``\x83\x01\x85a4XV[\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[\x96\x95PPPPPPV[\x83\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16` \x82\x01R```@\x82\x01\x81\x90R`\0\x90a6\xD8\x90\x83\x01\x84a6=V[\x95\x94PPPPPV[\x83\x81R``` \x82\x01R\x82Q``\x82\x01R`\0` \x84\x01Q```\x80\x84\x01Ra7\r`\xC0\x84\x01\x82a4XV[\x90P`@\x85\x01Q`_\x19\x84\x83\x03\x01`\xA0\x85\x01Ra7*\x82\x82a4XV[\x91PP\x82\x81\x03`@\x84\x01Ra6\xA4\x81\x85a6=V[`\x01`\x01`\xA0\x1B\x03\x93\x84\x16\x81R\x91\x90\x92\x16` \x82\x01R`@\x81\x01\x91\x90\x91R``\x01\x90V[\x86\x81R\x85` \x82\x01R`\xC0`@\x82\x01R`\0a7\x82`\xC0\x83\x01\x87a4XV[``\x83\x01\x86\x90R\x82\x81\x03`\x80\x84\x01R\x84Q\x80\x82R` \x80\x87\x01\x92\x01\x90`\0[\x81\x81\x10\x15a7\xDEW\x83Q\x80Q\x84R` \x81\x01Q` \x85\x01R`\xFF`@\x82\x01Q\x16`@\x85\x01RP``\x83\x01\x92P` \x84\x01\x93P`\x01\x81\x01\x90Pa7\xA1V[PP`\x01`\x01`\xA0\x1B\x03\x85\x16`\xA0\x85\x01R\x91Pa7\xF8\x90PV[\x97\x96PPPPPPPV[v\x02\x0B\x1B\x1B+\x9B\x9A\x1B{s\xA3\x93{a\xD1\x03\x0B\x1B\x1B{\xABs\xA1`M\x1B\x81R`\0\x83Qa85\x81`\x17\x85\x01` \x88\x01a44V[p\x01\x03K\x99\x03kK\x9B\x9BKs9\x03\x93{c)`}\x1B`\x17\x91\x84\x01\x91\x82\x01R\x83Qa8f\x81`(\x84\x01` \x88\x01a44V[\x01`(\x01\x94\x93PPPPV[` \x81R`\0a\x06\xB3` \x83\x01\x84a4XV[cNH{q`\xE0\x1B`\0R`\x11`\x04R`$`\0\xFD[\x80\x82\x02\x81\x15\x82\x82\x04\x84\x14\x17a\x04\x95Wa\x04\x95a8\x85V[\x80\x82\x01\x80\x82\x11\x15a\x04\x95Wa\x04\x95a8\x85V[`\0\x81a8\xD4Wa8\xD4a8\x85V[P`\0\x19\x01\x90V\xFEPKPHelper: auth method type and \xA2dipfsX\"\x12 \xB8GT\x90k\xE0a\xA4\xE5p\x17b\x0B.\xCB\x19\x9C\x07\x1A\x02\xC5w>\xB6M\x98\xC1z\x990w\x8CdsolcC\0\x08\x1C\x003"; /// The deployed bytecode of the contract. pub static PKPHELPER_DEPLOYED_BYTECODE: ::ethers::core::types::Bytes = ::ethers::core::types::Bytes::from_static( __DEPLOYED_BYTECODE,