{ "_format": "hh-sol-artifact-1", "contractName": "TestSemaphore", "sourceName": "contracts/TestSemaphore.sol", "abi": [ { "inputs": [ { "internalType": "contract ISemaphoreVerifier", "name": "_verifier", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "LeafAlreadyExists", "type": "error" }, { "inputs": [], "name": "LeafCannotBeZero", "type": "error" }, { "inputs": [], "name": "LeafDoesNotExist", "type": "error" }, { "inputs": [], "name": "LeafGreaterThanSnarkScalarField", "type": "error" }, { "inputs": [], "name": "Semaphore__CallerIsNotTheGroupAdmin", "type": "error" }, { "inputs": [], "name": "Semaphore__CallerIsNotThePendingGroupAdmin", "type": "error" }, { "inputs": [], "name": "Semaphore__GroupDoesNotExist", "type": "error" }, { "inputs": [], "name": "Semaphore__GroupHasNoMembers", "type": "error" }, { "inputs": [], "name": "Semaphore__InvalidProof", "type": "error" }, { "inputs": [], "name": "Semaphore__MerkleTreeDepthIsNotSupported", "type": "error" }, { "inputs": [], "name": "Semaphore__MerkleTreeRootIsExpired", "type": "error" }, { "inputs": [], "name": "Semaphore__MerkleTreeRootIsNotPartOfTheGroup", "type": "error" }, { "inputs": [], "name": "Semaphore__YouAreUsingTheSameNullifierTwice", "type": "error" }, { "inputs": [], "name": "WrongSiblingNodes", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "groupId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "oldAdmin", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "GroupAdminPending", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "groupId", "type": "uint256" }, { "indexed": true, "internalType": "address", "name": "oldAdmin", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "GroupAdminUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "groupId", "type": "uint256" } ], "name": "GroupCreated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "groupId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "oldMerkleTreeDuration", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newMerkleTreeDuration", "type": "uint256" } ], "name": "GroupMerkleTreeDurationUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "groupId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "index", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "identityCommitment", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "merkleTreeRoot", "type": "uint256" } ], "name": "MemberAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "groupId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "index", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "identityCommitment", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "merkleTreeRoot", "type": "uint256" } ], "name": "MemberRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "groupId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "index", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "identityCommitment", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newIdentityCommitment", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "merkleTreeRoot", "type": "uint256" } ], "name": "MemberUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "groupId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "startIndex", "type": "uint256" }, { "indexed": false, "internalType": "uint256[]", "name": "identityCommitments", "type": "uint256[]" }, { "indexed": false, "internalType": "uint256", "name": "merkleTreeRoot", "type": "uint256" } ], "name": "MembersAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "groupId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "merkleTreeDepth", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "merkleTreeRoot", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "nullifier", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "message", "type": "uint256" }, { "indexed": true, "internalType": "uint256", "name": "scope", "type": "uint256" }, { "indexed": false, "internalType": "uint256[8]", "name": "points", "type": "uint256[8]" } ], "name": "ProofValidated", "type": "event" }, { "inputs": [ { "internalType": "uint256", "name": "groupId", "type": "uint256" } ], "name": "acceptGroupAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "groupId", "type": "uint256" }, { "internalType": "uint256", "name": "identityCommitment", "type": "uint256" } ], "name": "addMember", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "groupId", "type": "uint256" }, { "internalType": "uint256[]", "name": "identityCommitments", "type": "uint256[]" } ], "name": "addMembers", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "admin", "type": "address" }, { "internalType": "uint256", "name": "merkleTreeDuration", "type": "uint256" } ], "name": "createGroup", "outputs": [ { "internalType": "uint256", "name": "groupId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "createGroup", "outputs": [ { "internalType": "uint256", "name": "groupId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "admin", "type": "address" } ], "name": "createGroup", "outputs": [ { "internalType": "uint256", "name": "groupId", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "groupId", "type": "uint256" } ], "name": "getGroupAdmin", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "groupId", "type": "uint256" } ], "name": "getMerkleTreeDepth", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "groupId", "type": "uint256" } ], "name": "getMerkleTreeRoot", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "groupId", "type": "uint256" } ], "name": "getMerkleTreeSize", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "groupCounter", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "groups", "outputs": [ { "internalType": "uint256", "name": "merkleTreeDuration", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "groupId", "type": "uint256" }, { "internalType": "uint256", "name": "identityCommitment", "type": "uint256" } ], "name": "hasMember", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "groupId", "type": "uint256" }, { "internalType": "uint256", "name": "identityCommitment", "type": "uint256" } ], "name": "indexOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "groupId", "type": "uint256" }, { "internalType": "uint256", "name": "identityCommitment", "type": "uint256" }, { "internalType": "uint256[]", "name": "merkleProofSiblings", "type": "uint256[]" } ], "name": "removeMember", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "groupId", "type": "uint256" }, { "internalType": "address", "name": "newAdmin", "type": "address" } ], "name": "updateGroupAdmin", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "groupId", "type": "uint256" }, { "internalType": "uint256", "name": "newMerkleTreeDuration", "type": "uint256" } ], "name": "updateGroupMerkleTreeDuration", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "groupId", "type": "uint256" }, { "internalType": "uint256", "name": "identityCommitment", "type": "uint256" }, { "internalType": "uint256", "name": "newIdentityCommitment", "type": "uint256" }, { "internalType": "uint256[]", "name": "merkleProofSiblings", "type": "uint256[]" } ], "name": "updateMember", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "groupId", "type": "uint256" }, { "components": [ { "internalType": "uint256", "name": "merkleTreeDepth", "type": "uint256" }, { "internalType": "uint256", "name": "merkleTreeRoot", "type": "uint256" }, { "internalType": "uint256", "name": "nullifier", "type": "uint256" }, { "internalType": "uint256", "name": "message", "type": "uint256" }, { "internalType": "uint256", "name": "scope", "type": "uint256" }, { "internalType": "uint256[8]", "name": "points", "type": "uint256[8]" } ], "internalType": "struct ISemaphore.SemaphoreProof", "name": "proof", "type": "tuple" } ], "name": "validateProof", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "verifier", "outputs": [ { "internalType": "contract ISemaphoreVerifier", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "groupId", "type": "uint256" }, { "components": [ { "internalType": "uint256", "name": "merkleTreeDepth", "type": "uint256" }, { "internalType": "uint256", "name": "merkleTreeRoot", "type": "uint256" }, { "internalType": "uint256", "name": "nullifier", "type": "uint256" }, { "internalType": "uint256", "name": "message", "type": "uint256" }, { "internalType": "uint256", "name": "scope", "type": "uint256" }, { "internalType": "uint256[8]", "name": "points", "type": "uint256[8]" } ], "internalType": "struct ISemaphore.SemaphoreProof", "name": "proof", "type": "tuple" } ], "name": "verifyProof", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x60806040523480156200001157600080fd5b50604051620034c0380380620034c08339818101604052810190620000379190620000fd565b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506200012f565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620000b18262000084565b9050919050565b6000620000c582620000a4565b9050919050565b620000d781620000b8565b8114620000e357600080fd5b50565b600081519050620000f781620000cc565b92915050565b6000602082840312156200011657620001156200007f565b5b60006200012684828501620000e6565b91505092915050565b613381806200013f6000396000f3fe608060405234801561001057600080fd5b50600436106101375760003560e01c80636389e107116100b8578063a9961c941161007c578063a9961c9414610384578063d0d898dd146103b4578063d24924fe146103d0578063da3cda52146103ee578063dabc4d511461040a578063fcf0b6ec1461043a57610137565b80636389e107146102a85780636cdd32fe146102d85780637ee35a0c146102f457806390509d441461032457806396324bd41461035457610137565b80634178c4d5116100ff5780634178c4d5146101f2578063456f41881461020e578063568ee8261461023e578063575185ed1461025a5780635c3f3b601461027857610137565b8063042453711461013c57806306dd8485146101585780631783efc3146101885780632b7ac3f3146101a45780632c880363146101c2575b600080fd5b6101566004803603810190610151919061265b565b610456565b005b610172600480360381019061016d91906126bb565b610497565b60405161017f919061270a565b60405180910390f35b6101a2600480360381019061019d91906126bb565b6104c5565b005b6101ac610504565b6040516101b991906127a4565b60405180910390f35b6101dc60048036038101906101d791906127fd565b61052a565b6040516101e9919061270a565b60405180910390f35b61020c6004803603810190610207919061283d565b610570565b005b610228600480360381019061022391906128ea565b6105b5565b6040516102359190612946565b60405180910390f35b61025860048036038101906102539190612961565b610a00565b005b610262610a0e565b60405161026f919061270a565b60405180910390f35b610292600480360381019061028d91906129a1565b610a53565b60405161029f919061270a565b60405180910390f35b6102c260048036038101906102bd91906129ce565b610a9a565b6040516102cf919061270a565b60405180910390f35b6102f260048036038101906102ed91906129fb565b610ab9565b005b61030e600480360381019061030991906129ce565b610afc565b60405161031b919061270a565b60405180910390f35b61033e600480360381019061033991906126bb565b610b1b565b60405161034b9190612946565b60405180910390f35b61036e600480360381019061036991906129ce565b610b49565b60405161037b919061270a565b60405180910390f35b61039e600480360381019061039991906129ce565b610b67565b6040516103ab9190612a7e565b60405180910390f35b6103ce60048036038101906103c991906128ea565b610ba4565b005b6103d8610cf3565b6040516103e5919061270a565b60405180910390f35b610408600480360381019061040391906129ce565b610cf9565b005b610424600480360381019061041f91906129ce565b610d05565b604051610431919061270a565b60405180910390f35b610454600480360381019061044f91906126bb565b610d28565b005b6000610463848484610e37565b9050426004600086815260200190815260200160002060010160008381526020019081526020016000208190555050505050565b60006104bd82600080868152602001908152602001600020610f4e90919063ffffffff16565b905092915050565b60006104d18383610fc8565b90504260046000858152602001908152602001600020600101600083815260200190815260200160002081905550505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006005600081548092919061053f90612ac8565b91905055905061054f81846110da565b81600460008381526020019081526020016000206000018190555092915050565b600061057f86868686866111b9565b90504260046000888152602001908152602001600020600101600083815260200190815260200160002081905550505050505050565b600082600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610651576040517f029f057900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160ff168360000135108061066e5750602060ff168360000135115b156106a5576040517fecf64f1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106b085610afc565b9050600081036106ec576040517fc8b02e0100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106f786610d05565b9050808560200135146107d15760006004600088815260200190815260200160002060010160008760200135815260200190815260200160002054905060006004600089815260200190815260200160002060000154905060008203610789576040517f4d32958600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80826107959190612b10565b4211156107ce576040517f9581a99000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a23f019960405180604001604052808860a00160006008811061083157610830612b44565b5b602002013581526020018860a00160016008811061085257610851612b44565b5b6020020135815250604051806040016040528060405180604001604052808b60a00160026008811061088757610886612b44565b5b602002013581526020018b60a0016003600881106108a8576108a7612b44565b5b6020020135815250815260200160405180604001604052808b60a0016004600881106108d7576108d6612b44565b5b602002013581526020018b60a0016005600881106108f8576108f7612b44565b5b602002013581525081525060405180604001604052808a60a00160066008811061092557610924612b44565b5b602002013581526020018a60a00160076008811061094657610945612b44565b5b602002013581525060405180608001604052808b6020013581526020018b60400135815260200161097a8c606001356112f1565b815260200161098c8c608001356112f1565b8152508a600001356040518663ffffffff1660e01b81526004016109b4959493929190612da0565b602060405180830381865afa1580156109d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f59190612e22565b935050505092915050565b610a0a8282611328565b5050565b600060056000815480929190610a2390612ac8565b919050559050610a3381336110da565b610e10600460008381526020019081526020016000206000018190555090565b600060056000815480929190610a6890612ac8565b919050559050610a7881836110da565b610e106004600083815260200190815260200160002060000181905550919050565b6000806000838152602001908152602001600020600101549050919050565b6000610ac785858585611473565b905042600460008781526020019081526020016000206001016000838152602001908152602001600020819055505050505050565b6000806000838152602001908152602001600020600001549050919050565b6000610b41826000808681526020019081526020016000206115a690919063ffffffff16565b905092915050565b60046020528060005260406000206000915090508060000154905081565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6004600083815260200190815260200160002060020160008260400135815260200190815260200160002060009054906101000a900460ff1615610c14576040517f208b15e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c1e82826105b5565b610c54576040517f4aa6bc4000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016004600084815260200190815260200160002060020160008360400135815260200190815260200160002060006101000a81548160ff02191690831515021790555080608001358160200135837f0c32e14cfe81a05d371c248d22de6b7ae849e981b76a1f8842e7b6da73fc405a8460000135856040013586606001358760a001604051610ce79493929190612e69565b60405180910390a45050565b60055481565b610d02816115c9565b50565b6000610d21600080848152602001908152602001600020611780565b9050919050565b813373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc1576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060046000858152602001908152602001600020600001549050826004600086815260200190815260200160002060000181905550837f264b2a8f6763c084235fe832ba903482b2ef1a521336881fc75b987c2dfd29c58285604051610e29929190612eaf565b60405180910390a250505050565b6000833373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed2576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610edd86610afc565b9050610f0585856000808a81526020019081526020016000206117a39092919063ffffffff16565b9250857f61e5e8054e3daf084a0c6c646c065e8bf5e7ca4d5567bda942309bd1652f349d82878787604051610f3d9493929190612f4a565b60405180910390a250509392505050565b6000808360030160008481526020019081526020016000205403610f9e576040517f7204756c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600183600301600084815260200190815260200160002054610fc09190612f8a565b905092915050565b6000823373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611063576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061106e85610afc565b905061109484600080888152602001908152602001600020611d8790919063ffffffff16565b9250847f19239b3f93cd10558aaf11423af70c77763bf54f52bcc75bfa74d4d13548cde98286866040516110ca93929190612fbe565b60405180910390a2505092915050565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550817ff0adfb94eab6daf835deb69c5738fe636150c3dfd08094a76f39b963dc8cb05a60405160405180910390a28073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16837f0ba83579a0e79193ef649b9f5a8759d35af086ba62a3e207b52e4a8ae30d49e360405160405180910390a45050565b6000853373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611254576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061127a876000808b8152602001908152602001600020610f4e90919063ffffffff16565b90506112a6878787876000808e8152602001908152602001600020611fe690949392919063ffffffff16565b9250877fea3588e4a2a0c93d6a0e69dfeaf7496f43ccccf02ad9ce0a5b7627cbca4b61b1828989876040516112de9493929190612ff5565b60405180910390a2505095945050505050565b6000600882604051602001611306919061305b565b6040516020818303038152906040528051906020012060001c901c9050919050565b813373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c1576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816002600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16847f1018365553cce55d9cb02ef73e18cc9311894f3fe1d1eafd235ac2d26cd8ba5860405160405180910390a4505050565b6000843373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461150e576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611534866000808a8152602001908152602001600020610f4e90919063ffffffff16565b905061155e8686866000808c815260200190815260200160002061259c909392919063ffffffff16565b9250867f3108849c053c77b8073a11256dffb5ffd5b55e93e105a355e1c9061db890d87182888660405161159493929190612fbe565b60405180910390a25050949350505050565b600080836003016000848152602001908152602001600020541415905092915050565b3373ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611661576040517f34c4245d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050336001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690553373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f0ba83579a0e79193ef649b9f5a8759d35af086ba62a3e207b52e4a8ae30d49e360405160405180910390a45050565b600081600201600083600101548152602001908152602001600020549050919050565b6000808460000154905060005b8484905081101561192f577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018585838181106117ef576117ee612b44565b5b905060200201351061182d576040517fc380a82e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600085858381811061184257611841612b44565b5b9050602002013503611880576040517f29691be200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118a38686868481811061189757611896612b44565b5b905060200201356115a6565b156118da576040517f258a195a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001836118e89190612b10565b6118f29190612b10565b86600301600087878581811061190b5761190a612b44565b5b905060200201358152602001908152602001600020819055508060010190506117b0565b506060848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505090506000866001015490505b858590508361198f9190612b10565b81600261199c91906131a9565b10156119b357806119ac90612ac8565b9050611980565b8087600101819055506000839050600087879050856119d29190612b10565b90506000600183901c905060006001806001856119ef9190612f8a565b901c6119fb9190612b10565b905060005b85811015611d0e5760008383611a169190612f8a565b905060008167ffffffffffffffff811115611a3457611a336131f4565b5b604051908082528060200260200182016040528015611a625781602001602082028036833780820191505090505b50905060005b82811015611c355760008860028884611a819190612b10565b611a8b9190613223565b1015611aae578f6002016000868152602001908152602001600020549050611aee565b8a8960028985611abe9190612b10565b611ac89190613223565b611ad29190612f8a565b81518110611ae357611ae2612b44565b5b602002602001015190505b600088600160028a86611b019190612b10565b611b0b9190613223565b611b159190612b10565b1015611b67578b8a600160028b87611b2d9190612b10565b611b379190613223565b611b419190612b10565b611b4b9190612f8a565b81518110611b5c57611b5b612b44565b5b602002602001015190505b6000808214611c0357735A7242de32803bC5329Ca287167eE726E53b219A63561558fe6040518060400160405280868152602001858152506040518263ffffffff1660e01b8152600401611bbb91906132ee565b602060405180830381865af4158015611bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfc919061331e565b9050611c07565b8290505b80858581518110611c1b57611c1a612b44565b5b602002602001018181525050836001019350505050611a68565b50600180871603611c86578860018a51611c4f9190612f8a565b81518110611c6057611c5f612b44565b5b60200260200101518e600201600085815260200190815260200160002081905550611cd3565b600189511115611cd2578860028a51611c9f9190612f8a565b81518110611cb057611caf612b44565b5b60200260200101518e6002016000858152602001908152602001600020819055505b5b849650600185901c9450809850839550600180600186611cf39190612f8a565b901c611cff9190612b10565b93508260010192505050611a00565b508989905087611d1e9190612b10565b8b6000018190555085600081518110611d3a57611d39612b44565b5b60200260200101518b60020160008781526020019081526020016000208190555085600081518110611d6f57611d6e612b44565b5b60200260200101519750505050505050509392505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018210611de2576040517fc380a82e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008203611e1c576040517f29691be200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e2683836115a6565b15611e5d576040517f258a195a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600001549050600084600101549050600182611e7c9190612b10565b816002611e8991906131a9565b1015611e9c5780611e9990612ac8565b90505b808560010181905550600084905060005b82811015611f90576001808286901c1603611f6a57735A7242de32803bC5329Ca287167eE726E53b219A63561558fe60405180604001604052808a6002016000868152602001908152602001600020548152602001858152506040518263ffffffff1660e01b8152600401611f2291906132ee565b602060405180830381865af4158015611f3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f63919061331e565b9150611f85565b81876002016000838152602001908152602001600020819055505b806001019050611ead565b5082611f9b90612ac8565b92508286600001819055508086600201600084815260200190815260200160002081905550828660030160008781526020019081526020016000208190555080935050505092915050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018410612041576040517fc380a82e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61204b86866115a6565b612081576040517f7204756c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61208b86856115a6565b156120c2576040517f258a195a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006120ce8787610f4e565b905060008590506000879050600060018a600001546120ed9190612f8a565b90506000808b60010154905060005b818110156124db576001808289901c16036122dc577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018a8a8581811061214557612144612b44565b5b9050602002013510612183576040517fc380a82e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b735A7242de32803bC5329Ca287167eE726E53b219A63561558fe60405180604001604052808d8d888181106121bb576121ba612b44565b5b905060200201358152602001898152506040518263ffffffff1660e01b81526004016121e791906132ee565b602060405180830381865af4158015612204573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612228919061331e565b9550735A7242de32803bC5329Ca287167eE726E53b219A63561558fe60405180604001604052808d8d8881811061226257612261612b44565b5b905060200201358152602001888152506040518263ffffffff1660e01b815260040161228e91906132ee565b602060405180830381865af41580156122ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cf919061331e565b94508260010192506124d0565b8084901c8188901c146124b4577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018a8a8581811061231d5761231c612b44565b5b905060200201351061235b576040517fc380a82e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b735A7242de32803bC5329Ca287167eE726E53b219A63561558fe60405180604001604052808981526020018d8d8881811061239957612398612b44565b5b905060200201358152506040518263ffffffff1660e01b81526004016123bf91906132ee565b602060405180830381865af41580156123dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612400919061331e565b9550735A7242de32803bC5329Ca287167eE726E53b219A63561558fe60405180604001604052808881526020018d8d888181106124405761243f612b44565b5b905060200201358152506040518263ffffffff1660e01b815260040161246691906132ee565b602060405180830381865af4158015612483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a7919061331e565b94508260010192506124cf565b858d6002016000858152602001908152602001600020819055505b5b8060010190506120fc565b506124e58c611780565b841461251d576040517f3fa930c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b848c60020160008381526020019081526020016000208190555060008a1461256f578b60030160008c8152602001908152602001600020548c60030160008c8152602001908152602001600020819055505b60008c60030160008d81526020019081526020016000208190555084965050505050505095945050505050565b60006125ac858560008686611fe6565b9050949350505050565b600080fd5b600080fd5b6000819050919050565b6125d3816125c0565b81146125de57600080fd5b50565b6000813590506125f0816125ca565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261261b5761261a6125f6565b5b8235905067ffffffffffffffff811115612638576126376125fb565b5b60208301915083602082028301111561265457612653612600565b5b9250929050565b600080600060408486031215612674576126736125b6565b5b6000612682868287016125e1565b935050602084013567ffffffffffffffff8111156126a3576126a26125bb565b5b6126af86828701612605565b92509250509250925092565b600080604083850312156126d2576126d16125b6565b5b60006126e0858286016125e1565b92505060206126f1858286016125e1565b9150509250929050565b612704816125c0565b82525050565b600060208201905061271f60008301846126fb565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061276a61276561276084612725565b612745565b612725565b9050919050565b600061277c8261274f565b9050919050565b600061278e82612771565b9050919050565b61279e81612783565b82525050565b60006020820190506127b96000830184612795565b92915050565b60006127ca82612725565b9050919050565b6127da816127bf565b81146127e557600080fd5b50565b6000813590506127f7816127d1565b92915050565b60008060408385031215612814576128136125b6565b5b6000612822858286016127e8565b9250506020612833858286016125e1565b9150509250929050565b600080600080600060808688031215612859576128586125b6565b5b6000612867888289016125e1565b9550506020612878888289016125e1565b9450506040612889888289016125e1565b935050606086013567ffffffffffffffff8111156128aa576128a96125bb565b5b6128b688828901612605565b92509250509295509295909350565b600080fd5b60006101a082840312156128e1576128e06128c5565b5b81905092915050565b6000806101c08385031215612902576129016125b6565b5b6000612910858286016125e1565b9250506020612921858286016128ca565b9150509250929050565b60008115159050919050565b6129408161292b565b82525050565b600060208201905061295b6000830184612937565b92915050565b60008060408385031215612978576129776125b6565b5b6000612986858286016125e1565b9250506020612997858286016127e8565b9150509250929050565b6000602082840312156129b7576129b66125b6565b5b60006129c5848285016127e8565b91505092915050565b6000602082840312156129e4576129e36125b6565b5b60006129f2848285016125e1565b91505092915050565b60008060008060608587031215612a1557612a146125b6565b5b6000612a23878288016125e1565b9450506020612a34878288016125e1565b935050604085013567ffffffffffffffff811115612a5557612a546125bb565b5b612a6187828801612605565b925092505092959194509250565b612a78816127bf565b82525050565b6000602082019050612a936000830184612a6f565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ad3826125c0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b0557612b04612a99565b5b600182019050919050565b6000612b1b826125c0565b9150612b26836125c0565b9250828201905080821115612b3e57612b3d612a99565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060029050919050565b600081905092915050565b6000819050919050565b612b9c816125c0565b82525050565b6000612bae8383612b93565b60208301905092915050565b6000602082019050919050565b612bd081612b73565b612bda8184612b7e565b9250612be582612b89565b8060005b83811015612c16578151612bfd8782612ba2565b9650612c0883612bba565b925050600181019050612be9565b505050505050565b600060029050919050565b600081905092915050565b6000819050919050565b600081905092915050565b612c5281612b73565b612c5c8184612c3e565b9250612c6782612b89565b8060005b83811015612c98578151612c7f8782612ba2565b9650612c8a83612bba565b925050600181019050612c6b565b505050505050565b6000612cac8383612c49565b60408301905092915050565b6000602082019050919050565b612cce81612c1e565b612cd88184612c29565b9250612ce382612c34565b8060005b83811015612d14578151612cfb8782612ca0565b9650612d0683612cb8565b925050600181019050612ce7565b505050505050565b600060049050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b612d5281612d1c565b612d5c8184612d27565b9250612d6782612d32565b8060005b83811015612d98578151612d7f8782612ba2565b9650612d8a83612d3c565b925050600181019050612d6b565b505050505050565b60006101a082019050612db66000830188612bc7565b612dc36040830187612cc5565b612dd060c0830186612bc7565b612dde610100830185612d49565b612dec6101808301846126fb565b9695505050505050565b612dff8161292b565b8114612e0a57600080fd5b50565b600081519050612e1c81612df6565b92915050565b600060208284031215612e3857612e376125b6565b5b6000612e4684828501612e0d565b91505092915050565b82818337505050565b612e656101008383612e4f565b5050565b600061016082019050612e7f60008301876126fb565b612e8c60208301866126fb565b612e9960408301856126fb565b612ea66060830184612e58565b95945050505050565b6000604082019050612ec460008301856126fb565b612ed160208301846126fb565b9392505050565b600082825260208201905092915050565b600080fd5b6000612efa8385612ed8565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612f2d57612f2c612ee9565b5b602083029250612f3e838584612e4f565b82840190509392505050565b6000606082019050612f5f60008301876126fb565b8181036020830152612f72818587612eee565b9050612f8160408301846126fb565b95945050505050565b6000612f95826125c0565b9150612fa0836125c0565b9250828203905081811115612fb857612fb7612a99565b5b92915050565b6000606082019050612fd360008301866126fb565b612fe060208301856126fb565b612fed60408301846126fb565b949350505050565b600060808201905061300a60008301876126fb565b61301760208301866126fb565b61302460408301856126fb565b61303160608301846126fb565b95945050505050565b6000819050919050565b613055613050826125c0565b61303a565b82525050565b60006130678284613044565b60208201915081905092915050565b60008160011c9050919050565b6000808291508390505b60018511156130cd578086048111156130a9576130a8612a99565b5b60018516156130b85780820291505b80810290506130c685613076565b945061308d565b94509492505050565b6000826130e657600190506131a2565b816130f457600090506131a2565b816001811461310a576002811461311457613143565b60019150506131a2565b60ff84111561312657613125612a99565b5b8360020a91508482111561313d5761313c612a99565b5b506131a2565b5060208310610133831016604e8410600b84101617156131785782820a90508381111561317357613172612a99565b5b6131a2565b6131858484846001613083565b9250905081840481111561319c5761319b612a99565b5b81810290505b9392505050565b60006131b4826125c0565b91506131bf836125c0565b92506131ec7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846130d6565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600061322e826125c0565b9150613239836125c0565b9250828202613247816125c0565b9150828204841483151761325e5761325d612a99565b5b5092915050565b600081905092915050565b613279816125c0565b82525050565b600061328b8383613270565b60208301905092915050565b6132a081612b73565b6132aa8184613265565b92506132b582612b89565b8060005b838110156132e65781516132cd878261327f565b96506132d883612bba565b9250506001810190506132b9565b505050505050565b60006040820190506133036000830184613297565b92915050565b600081519050613318816125ca565b92915050565b600060208284031215613334576133336125b6565b5b600061334284828501613309565b9150509291505056fea2646970667358221220a62481dea8c49d72143d7ef1066d6ab0bd43fbf25d7d5fb716d34e4927e7b53f64736f6c63430008170033", "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101375760003560e01c80636389e107116100b8578063a9961c941161007c578063a9961c9414610384578063d0d898dd146103b4578063d24924fe146103d0578063da3cda52146103ee578063dabc4d511461040a578063fcf0b6ec1461043a57610137565b80636389e107146102a85780636cdd32fe146102d85780637ee35a0c146102f457806390509d441461032457806396324bd41461035457610137565b80634178c4d5116100ff5780634178c4d5146101f2578063456f41881461020e578063568ee8261461023e578063575185ed1461025a5780635c3f3b601461027857610137565b8063042453711461013c57806306dd8485146101585780631783efc3146101885780632b7ac3f3146101a45780632c880363146101c2575b600080fd5b6101566004803603810190610151919061265b565b610456565b005b610172600480360381019061016d91906126bb565b610497565b60405161017f919061270a565b60405180910390f35b6101a2600480360381019061019d91906126bb565b6104c5565b005b6101ac610504565b6040516101b991906127a4565b60405180910390f35b6101dc60048036038101906101d791906127fd565b61052a565b6040516101e9919061270a565b60405180910390f35b61020c6004803603810190610207919061283d565b610570565b005b610228600480360381019061022391906128ea565b6105b5565b6040516102359190612946565b60405180910390f35b61025860048036038101906102539190612961565b610a00565b005b610262610a0e565b60405161026f919061270a565b60405180910390f35b610292600480360381019061028d91906129a1565b610a53565b60405161029f919061270a565b60405180910390f35b6102c260048036038101906102bd91906129ce565b610a9a565b6040516102cf919061270a565b60405180910390f35b6102f260048036038101906102ed91906129fb565b610ab9565b005b61030e600480360381019061030991906129ce565b610afc565b60405161031b919061270a565b60405180910390f35b61033e600480360381019061033991906126bb565b610b1b565b60405161034b9190612946565b60405180910390f35b61036e600480360381019061036991906129ce565b610b49565b60405161037b919061270a565b60405180910390f35b61039e600480360381019061039991906129ce565b610b67565b6040516103ab9190612a7e565b60405180910390f35b6103ce60048036038101906103c991906128ea565b610ba4565b005b6103d8610cf3565b6040516103e5919061270a565b60405180910390f35b610408600480360381019061040391906129ce565b610cf9565b005b610424600480360381019061041f91906129ce565b610d05565b604051610431919061270a565b60405180910390f35b610454600480360381019061044f91906126bb565b610d28565b005b6000610463848484610e37565b9050426004600086815260200190815260200160002060010160008381526020019081526020016000208190555050505050565b60006104bd82600080868152602001908152602001600020610f4e90919063ffffffff16565b905092915050565b60006104d18383610fc8565b90504260046000858152602001908152602001600020600101600083815260200190815260200160002081905550505050565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006005600081548092919061053f90612ac8565b91905055905061054f81846110da565b81600460008381526020019081526020016000206000018190555092915050565b600061057f86868686866111b9565b90504260046000888152602001908152602001600020600101600083815260200190815260200160002081905550505050505050565b600082600073ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603610651576040517f029f057900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600160ff168360000135108061066e5750602060ff168360000135115b156106a5576040517fecf64f1200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106b085610afc565b9050600081036106ec576040517fc8b02e0100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006106f786610d05565b9050808560200135146107d15760006004600088815260200190815260200160002060010160008760200135815260200190815260200160002054905060006004600089815260200190815260200160002060000154905060008203610789576040517f4d32958600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80826107959190612b10565b4211156107ce576040517f9581a99000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a23f019960405180604001604052808860a00160006008811061083157610830612b44565b5b602002013581526020018860a00160016008811061085257610851612b44565b5b6020020135815250604051806040016040528060405180604001604052808b60a00160026008811061088757610886612b44565b5b602002013581526020018b60a0016003600881106108a8576108a7612b44565b5b6020020135815250815260200160405180604001604052808b60a0016004600881106108d7576108d6612b44565b5b602002013581526020018b60a0016005600881106108f8576108f7612b44565b5b602002013581525081525060405180604001604052808a60a00160066008811061092557610924612b44565b5b602002013581526020018a60a00160076008811061094657610945612b44565b5b602002013581525060405180608001604052808b6020013581526020018b60400135815260200161097a8c606001356112f1565b815260200161098c8c608001356112f1565b8152508a600001356040518663ffffffff1660e01b81526004016109b4959493929190612da0565b602060405180830381865afa1580156109d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f59190612e22565b935050505092915050565b610a0a8282611328565b5050565b600060056000815480929190610a2390612ac8565b919050559050610a3381336110da565b610e10600460008381526020019081526020016000206000018190555090565b600060056000815480929190610a6890612ac8565b919050559050610a7881836110da565b610e106004600083815260200190815260200160002060000181905550919050565b6000806000838152602001908152602001600020600101549050919050565b6000610ac785858585611473565b905042600460008781526020019081526020016000206001016000838152602001908152602001600020819055505050505050565b6000806000838152602001908152602001600020600001549050919050565b6000610b41826000808681526020019081526020016000206115a690919063ffffffff16565b905092915050565b60046020528060005260406000206000915090508060000154905081565b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6004600083815260200190815260200160002060020160008260400135815260200190815260200160002060009054906101000a900460ff1615610c14576040517f208b15e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610c1e82826105b5565b610c54576040517f4aa6bc4000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60016004600084815260200190815260200160002060020160008360400135815260200190815260200160002060006101000a81548160ff02191690831515021790555080608001358160200135837f0c32e14cfe81a05d371c248d22de6b7ae849e981b76a1f8842e7b6da73fc405a8460000135856040013586606001358760a001604051610ce79493929190612e69565b60405180910390a45050565b60055481565b610d02816115c9565b50565b6000610d21600080848152602001908152602001600020611780565b9050919050565b813373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc1576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060046000858152602001908152602001600020600001549050826004600086815260200190815260200160002060000181905550837f264b2a8f6763c084235fe832ba903482b2ef1a521336881fc75b987c2dfd29c58285604051610e29929190612eaf565b60405180910390a250505050565b6000833373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ed2576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610edd86610afc565b9050610f0585856000808a81526020019081526020016000206117a39092919063ffffffff16565b9250857f61e5e8054e3daf084a0c6c646c065e8bf5e7ca4d5567bda942309bd1652f349d82878787604051610f3d9493929190612f4a565b60405180910390a250509392505050565b6000808360030160008481526020019081526020016000205403610f9e576040517f7204756c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600183600301600084815260200190815260200160002054610fc09190612f8a565b905092915050565b6000823373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611063576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061106e85610afc565b905061109484600080888152602001908152602001600020611d8790919063ffffffff16565b9250847f19239b3f93cd10558aaf11423af70c77763bf54f52bcc75bfa74d4d13548cde98286866040516110ca93929190612fbe565b60405180910390a2505092915050565b806001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550817ff0adfb94eab6daf835deb69c5738fe636150c3dfd08094a76f39b963dc8cb05a60405160405180910390a28073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff16837f0ba83579a0e79193ef649b9f5a8759d35af086ba62a3e207b52e4a8ae30d49e360405160405180910390a45050565b6000853373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611254576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061127a876000808b8152602001908152602001600020610f4e90919063ffffffff16565b90506112a6878787876000808e8152602001908152602001600020611fe690949392919063ffffffff16565b9250877fea3588e4a2a0c93d6a0e69dfeaf7496f43ccccf02ad9ce0a5b7627cbca4b61b1828989876040516112de9493929190612ff5565b60405180910390a2505095945050505050565b6000600882604051602001611306919061305b565b6040516020818303038152906040528051906020012060001c901c9050919050565b813373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113c1576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b816002600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16847f1018365553cce55d9cb02ef73e18cc9311894f3fe1d1eafd235ac2d26cd8ba5860405160405180910390a4505050565b6000843373ffffffffffffffffffffffffffffffffffffffff166001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461150e576040517fbb9bf27800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000611534866000808a8152602001908152602001600020610f4e90919063ffffffff16565b905061155e8686866000808c815260200190815260200160002061259c909392919063ffffffff16565b9250867f3108849c053c77b8073a11256dffb5ffd5b55e93e105a355e1c9061db890d87182888660405161159493929190612fbe565b60405180910390a25050949350505050565b600080836003016000848152602001908152602001600020541415905092915050565b3373ffffffffffffffffffffffffffffffffffffffff166002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611661576040517f34c4245d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006001600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050336001600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600083815260200190815260200160002060006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690553373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f0ba83579a0e79193ef649b9f5a8759d35af086ba62a3e207b52e4a8ae30d49e360405160405180910390a45050565b600081600201600083600101548152602001908152602001600020549050919050565b6000808460000154905060005b8484905081101561192f577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018585838181106117ef576117ee612b44565b5b905060200201351061182d576040517fc380a82e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600085858381811061184257611841612b44565b5b9050602002013503611880576040517f29691be200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6118a38686868481811061189757611896612b44565b5b905060200201356115a6565b156118da576040517f258a195a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806001836118e89190612b10565b6118f29190612b10565b86600301600087878581811061190b5761190a612b44565b5b905060200201358152602001908152602001600020819055508060010190506117b0565b506060848480806020026020016040519081016040528093929190818152602001838360200280828437600081840152601f19601f8201169050808301925050505050505090506000866001015490505b858590508361198f9190612b10565b81600261199c91906131a9565b10156119b357806119ac90612ac8565b9050611980565b8087600101819055506000839050600087879050856119d29190612b10565b90506000600183901c905060006001806001856119ef9190612f8a565b901c6119fb9190612b10565b905060005b85811015611d0e5760008383611a169190612f8a565b905060008167ffffffffffffffff811115611a3457611a336131f4565b5b604051908082528060200260200182016040528015611a625781602001602082028036833780820191505090505b50905060005b82811015611c355760008860028884611a819190612b10565b611a8b9190613223565b1015611aae578f6002016000868152602001908152602001600020549050611aee565b8a8960028985611abe9190612b10565b611ac89190613223565b611ad29190612f8a565b81518110611ae357611ae2612b44565b5b602002602001015190505b600088600160028a86611b019190612b10565b611b0b9190613223565b611b159190612b10565b1015611b67578b8a600160028b87611b2d9190612b10565b611b379190613223565b611b419190612b10565b611b4b9190612f8a565b81518110611b5c57611b5b612b44565b5b602002602001015190505b6000808214611c0357735A7242de32803bC5329Ca287167eE726E53b219A63561558fe6040518060400160405280868152602001858152506040518263ffffffff1660e01b8152600401611bbb91906132ee565b602060405180830381865af4158015611bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfc919061331e565b9050611c07565b8290505b80858581518110611c1b57611c1a612b44565b5b602002602001018181525050836001019350505050611a68565b50600180871603611c86578860018a51611c4f9190612f8a565b81518110611c6057611c5f612b44565b5b60200260200101518e600201600085815260200190815260200160002081905550611cd3565b600189511115611cd2578860028a51611c9f9190612f8a565b81518110611cb057611caf612b44565b5b60200260200101518e6002016000858152602001908152602001600020819055505b5b849650600185901c9450809850839550600180600186611cf39190612f8a565b901c611cff9190612b10565b93508260010192505050611a00565b508989905087611d1e9190612b10565b8b6000018190555085600081518110611d3a57611d39612b44565b5b60200260200101518b60020160008781526020019081526020016000208190555085600081518110611d6f57611d6e612b44565b5b60200260200101519750505050505050509392505050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018210611de2576040517fc380a82e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008203611e1c576040517f29691be200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e2683836115a6565b15611e5d576040517f258a195a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600083600001549050600084600101549050600182611e7c9190612b10565b816002611e8991906131a9565b1015611e9c5780611e9990612ac8565b90505b808560010181905550600084905060005b82811015611f90576001808286901c1603611f6a57735A7242de32803bC5329Ca287167eE726E53b219A63561558fe60405180604001604052808a6002016000868152602001908152602001600020548152602001858152506040518263ffffffff1660e01b8152600401611f2291906132ee565b602060405180830381865af4158015611f3f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f63919061331e565b9150611f85565b81876002016000838152602001908152602001600020819055505b806001019050611ead565b5082611f9b90612ac8565b92508286600001819055508086600201600084815260200190815260200160002081905550828660030160008781526020019081526020016000208190555080935050505092915050565b60007f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018410612041576040517fc380a82e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61204b86866115a6565b612081576040517f7204756c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61208b86856115a6565b156120c2576040517f258a195a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006120ce8787610f4e565b905060008590506000879050600060018a600001546120ed9190612f8a565b90506000808b60010154905060005b818110156124db576001808289901c16036122dc577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018a8a8581811061214557612144612b44565b5b9050602002013510612183576040517fc380a82e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b735A7242de32803bC5329Ca287167eE726E53b219A63561558fe60405180604001604052808d8d888181106121bb576121ba612b44565b5b905060200201358152602001898152506040518263ffffffff1660e01b81526004016121e791906132ee565b602060405180830381865af4158015612204573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612228919061331e565b9550735A7242de32803bC5329Ca287167eE726E53b219A63561558fe60405180604001604052808d8d8881811061226257612261612b44565b5b905060200201358152602001888152506040518263ffffffff1660e01b815260040161228e91906132ee565b602060405180830381865af41580156122ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122cf919061331e565b94508260010192506124d0565b8084901c8188901c146124b4577f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018a8a8581811061231d5761231c612b44565b5b905060200201351061235b576040517fc380a82e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b735A7242de32803bC5329Ca287167eE726E53b219A63561558fe60405180604001604052808981526020018d8d8881811061239957612398612b44565b5b905060200201358152506040518263ffffffff1660e01b81526004016123bf91906132ee565b602060405180830381865af41580156123dc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612400919061331e565b9550735A7242de32803bC5329Ca287167eE726E53b219A63561558fe60405180604001604052808881526020018d8d888181106124405761243f612b44565b5b905060200201358152506040518263ffffffff1660e01b815260040161246691906132ee565b602060405180830381865af4158015612483573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a7919061331e565b94508260010192506124cf565b858d6002016000858152602001908152602001600020819055505b5b8060010190506120fc565b506124e58c611780565b841461251d576040517f3fa930c600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b848c60020160008381526020019081526020016000208190555060008a1461256f578b60030160008c8152602001908152602001600020548c60030160008c8152602001908152602001600020819055505b60008c60030160008d81526020019081526020016000208190555084965050505050505095945050505050565b60006125ac858560008686611fe6565b9050949350505050565b600080fd5b600080fd5b6000819050919050565b6125d3816125c0565b81146125de57600080fd5b50565b6000813590506125f0816125ca565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f84011261261b5761261a6125f6565b5b8235905067ffffffffffffffff811115612638576126376125fb565b5b60208301915083602082028301111561265457612653612600565b5b9250929050565b600080600060408486031215612674576126736125b6565b5b6000612682868287016125e1565b935050602084013567ffffffffffffffff8111156126a3576126a26125bb565b5b6126af86828701612605565b92509250509250925092565b600080604083850312156126d2576126d16125b6565b5b60006126e0858286016125e1565b92505060206126f1858286016125e1565b9150509250929050565b612704816125c0565b82525050565b600060208201905061271f60008301846126fb565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600061276a61276561276084612725565b612745565b612725565b9050919050565b600061277c8261274f565b9050919050565b600061278e82612771565b9050919050565b61279e81612783565b82525050565b60006020820190506127b96000830184612795565b92915050565b60006127ca82612725565b9050919050565b6127da816127bf565b81146127e557600080fd5b50565b6000813590506127f7816127d1565b92915050565b60008060408385031215612814576128136125b6565b5b6000612822858286016127e8565b9250506020612833858286016125e1565b9150509250929050565b600080600080600060808688031215612859576128586125b6565b5b6000612867888289016125e1565b9550506020612878888289016125e1565b9450506040612889888289016125e1565b935050606086013567ffffffffffffffff8111156128aa576128a96125bb565b5b6128b688828901612605565b92509250509295509295909350565b600080fd5b60006101a082840312156128e1576128e06128c5565b5b81905092915050565b6000806101c08385031215612902576129016125b6565b5b6000612910858286016125e1565b9250506020612921858286016128ca565b9150509250929050565b60008115159050919050565b6129408161292b565b82525050565b600060208201905061295b6000830184612937565b92915050565b60008060408385031215612978576129776125b6565b5b6000612986858286016125e1565b9250506020612997858286016127e8565b9150509250929050565b6000602082840312156129b7576129b66125b6565b5b60006129c5848285016127e8565b91505092915050565b6000602082840312156129e4576129e36125b6565b5b60006129f2848285016125e1565b91505092915050565b60008060008060608587031215612a1557612a146125b6565b5b6000612a23878288016125e1565b9450506020612a34878288016125e1565b935050604085013567ffffffffffffffff811115612a5557612a546125bb565b5b612a6187828801612605565b925092505092959194509250565b612a78816127bf565b82525050565b6000602082019050612a936000830184612a6f565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ad3826125c0565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612b0557612b04612a99565b5b600182019050919050565b6000612b1b826125c0565b9150612b26836125c0565b9250828201905080821115612b3e57612b3d612a99565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600060029050919050565b600081905092915050565b6000819050919050565b612b9c816125c0565b82525050565b6000612bae8383612b93565b60208301905092915050565b6000602082019050919050565b612bd081612b73565b612bda8184612b7e565b9250612be582612b89565b8060005b83811015612c16578151612bfd8782612ba2565b9650612c0883612bba565b925050600181019050612be9565b505050505050565b600060029050919050565b600081905092915050565b6000819050919050565b600081905092915050565b612c5281612b73565b612c5c8184612c3e565b9250612c6782612b89565b8060005b83811015612c98578151612c7f8782612ba2565b9650612c8a83612bba565b925050600181019050612c6b565b505050505050565b6000612cac8383612c49565b60408301905092915050565b6000602082019050919050565b612cce81612c1e565b612cd88184612c29565b9250612ce382612c34565b8060005b83811015612d14578151612cfb8782612ca0565b9650612d0683612cb8565b925050600181019050612ce7565b505050505050565b600060049050919050565b600081905092915050565b6000819050919050565b6000602082019050919050565b612d5281612d1c565b612d5c8184612d27565b9250612d6782612d32565b8060005b83811015612d98578151612d7f8782612ba2565b9650612d8a83612d3c565b925050600181019050612d6b565b505050505050565b60006101a082019050612db66000830188612bc7565b612dc36040830187612cc5565b612dd060c0830186612bc7565b612dde610100830185612d49565b612dec6101808301846126fb565b9695505050505050565b612dff8161292b565b8114612e0a57600080fd5b50565b600081519050612e1c81612df6565b92915050565b600060208284031215612e3857612e376125b6565b5b6000612e4684828501612e0d565b91505092915050565b82818337505050565b612e656101008383612e4f565b5050565b600061016082019050612e7f60008301876126fb565b612e8c60208301866126fb565b612e9960408301856126fb565b612ea66060830184612e58565b95945050505050565b6000604082019050612ec460008301856126fb565b612ed160208301846126fb565b9392505050565b600082825260208201905092915050565b600080fd5b6000612efa8385612ed8565b93507f07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831115612f2d57612f2c612ee9565b5b602083029250612f3e838584612e4f565b82840190509392505050565b6000606082019050612f5f60008301876126fb565b8181036020830152612f72818587612eee565b9050612f8160408301846126fb565b95945050505050565b6000612f95826125c0565b9150612fa0836125c0565b9250828203905081811115612fb857612fb7612a99565b5b92915050565b6000606082019050612fd360008301866126fb565b612fe060208301856126fb565b612fed60408301846126fb565b949350505050565b600060808201905061300a60008301876126fb565b61301760208301866126fb565b61302460408301856126fb565b61303160608301846126fb565b95945050505050565b6000819050919050565b613055613050826125c0565b61303a565b82525050565b60006130678284613044565b60208201915081905092915050565b60008160011c9050919050565b6000808291508390505b60018511156130cd578086048111156130a9576130a8612a99565b5b60018516156130b85780820291505b80810290506130c685613076565b945061308d565b94509492505050565b6000826130e657600190506131a2565b816130f457600090506131a2565b816001811461310a576002811461311457613143565b60019150506131a2565b60ff84111561312657613125612a99565b5b8360020a91508482111561313d5761313c612a99565b5b506131a2565b5060208310610133831016604e8410600b84101617156131785782820a90508381111561317357613172612a99565b5b6131a2565b6131858484846001613083565b9250905081840481111561319c5761319b612a99565b5b81810290505b9392505050565b60006131b4826125c0565b91506131bf836125c0565b92506131ec7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846130d6565b905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600061322e826125c0565b9150613239836125c0565b9250828202613247816125c0565b9150828204841483151761325e5761325d612a99565b5b5092915050565b600081905092915050565b613279816125c0565b82525050565b600061328b8383613270565b60208301905092915050565b6132a081612b73565b6132aa8184613265565b92506132b582612b89565b8060005b838110156132e65781516132cd878261327f565b96506132d883612bba565b9250506001810190506132b9565b505050505050565b60006040820190506133036000830184613297565b92915050565b600081519050613318816125ca565b92915050565b600060208284031215613334576133336125b6565b5b600061334284828501613309565b9150509291505056fea2646970667358221220a62481dea8c49d72143d7ef1066d6ab0bd43fbf25d7d5fb716d34e4927e7b53f64736f6c63430008170033", "linkReferences": { "poseidon-solidity/PoseidonT3.sol": { "PoseidonT3": [ { "length": 20, "start": 7345 }, { "length": 20, "start": 8195 }, { "length": 20, "start": 8900 }, { "length": 20, "start": 9067 }, { "length": 20, "start": 9372 }, { "length": 20, "start": 9539 } ] } }, "deployedLinkReferences": { "poseidon-solidity/PoseidonT3.sol": { "PoseidonT3": [ { "length": 20, "start": 7026 }, { "length": 20, "start": 7876 }, { "length": 20, "start": 8581 }, { "length": 20, "start": 8748 }, { "length": 20, "start": 9053 }, { "length": 20, "start": 9220 } ] } } }