Files
smom-dbis-138/artifacts/contracts/compliance/IndyVerifier.sol/IndyVerifier.json
2026-03-02 12:14:09 -08:00

639 lines
37 KiB
JSON

{
"_format": "hh-sol-artifact-1",
"contractName": "IndyVerifier",
"sourceName": "contracts/compliance/IndyVerifier.sol",
"abi": [
{
"inputs": [
{
"internalType": "address",
"name": "admin",
"type": "address"
}
],
"stateMutability": "nonpayable",
"type": "constructor"
},
{
"inputs": [],
"name": "AccessControlBadConfirmation",
"type": "error"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
},
{
"internalType": "bytes32",
"name": "neededRole",
"type": "bytes32"
}
],
"name": "AccessControlUnauthorizedAccount",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "enum IndyVerifier.CredentialType",
"name": "credType",
"type": "uint8"
}
],
"name": "CredentialRevoked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "user",
"type": "address"
},
{
"indexed": false,
"internalType": "enum IndyVerifier.CredentialType",
"name": "credType",
"type": "uint8"
},
{
"indexed": false,
"internalType": "uint256",
"name": "score",
"type": "uint256"
},
{
"indexed": false,
"internalType": "string",
"name": "proofId",
"type": "string"
}
],
"name": "CredentialVerified",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "previousAdminRole",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "bytes32",
"name": "newAdminRole",
"type": "bytes32"
}
],
"name": "RoleAdminChanged",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleGranted",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"indexed": true,
"internalType": "address",
"name": "account",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "sender",
"type": "address"
}
],
"name": "RoleRevoked",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": false,
"internalType": "enum IndyVerifier.CredentialType",
"name": "credType",
"type": "uint8"
},
{
"indexed": false,
"internalType": "string",
"name": "schemaId",
"type": "string"
},
{
"indexed": false,
"internalType": "string",
"name": "credDefId",
"type": "string"
}
],
"name": "SchemaRegistered",
"type": "event"
},
{
"inputs": [],
"name": "DEFAULT_ADMIN_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "ISSUER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "VERIFIER_ROLE",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address[]",
"name": "users",
"type": "address[]"
},
{
"internalType": "enum IndyVerifier.CredentialType[]",
"name": "credTypes",
"type": "uint8[]"
},
{
"internalType": "bytes[]",
"name": "zkProofs",
"type": "bytes[]"
},
{
"internalType": "uint256[]",
"name": "scores",
"type": "uint256[]"
},
{
"internalType": "string[]",
"name": "proofIds",
"type": "string[]"
}
],
"name": "batchVerifyCredentials",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "enum IndyVerifier.CredentialType",
"name": "credType",
"type": "uint8"
}
],
"name": "getCredentialDetails",
"outputs": [
{
"components": [
{
"internalType": "bool",
"name": "verified",
"type": "bool"
},
{
"internalType": "uint256",
"name": "score",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "verifiedAt",
"type": "uint256"
},
{
"internalType": "string",
"name": "proofId",
"type": "string"
}
],
"internalType": "struct IndyVerifier.VerificationResult",
"name": "",
"type": "tuple"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
}
],
"name": "getRoleAdmin",
"outputs": [
{
"internalType": "bytes32",
"name": "",
"type": "bytes32"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "grantRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "enum IndyVerifier.CredentialType",
"name": "credType",
"type": "uint8"
}
],
"name": "hasCredential",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "hasRole",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "enum IndyVerifier.CredentialType",
"name": "credType",
"type": "uint8"
},
{
"internalType": "string",
"name": "schemaId",
"type": "string"
},
{
"internalType": "string",
"name": "credDefId",
"type": "string"
},
{
"internalType": "bool",
"name": "required",
"type": "bool"
},
{
"internalType": "uint256",
"name": "minScore",
"type": "uint256"
}
],
"name": "registerSchema",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "callerConfirmation",
"type": "address"
}
],
"name": "renounceRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "enum IndyVerifier.CredentialType",
"name": "credType",
"type": "uint8"
}
],
"name": "revokeCredential",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes32",
"name": "role",
"type": "bytes32"
},
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "revokeRole",
"outputs": [],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "enum IndyVerifier.CredentialType",
"name": "",
"type": "uint8"
}
],
"name": "schemas",
"outputs": [
{
"internalType": "string",
"name": "schemaId",
"type": "string"
},
{
"internalType": "string",
"name": "credDefId",
"type": "string"
},
{
"internalType": "bool",
"name": "required",
"type": "bool"
},
{
"internalType": "enum IndyVerifier.CredentialType",
"name": "credType",
"type": "uint8"
},
{
"internalType": "uint256",
"name": "minScore",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "bytes4",
"name": "interfaceId",
"type": "bytes4"
}
],
"name": "supportsInterface",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "",
"type": "address"
},
{
"internalType": "enum IndyVerifier.CredentialType",
"name": "",
"type": "uint8"
}
],
"name": "userCredentials",
"outputs": [
{
"internalType": "bool",
"name": "verified",
"type": "bool"
},
{
"internalType": "uint256",
"name": "score",
"type": "uint256"
},
{
"internalType": "uint256",
"name": "verifiedAt",
"type": "uint256"
},
{
"internalType": "string",
"name": "proofId",
"type": "string"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "string",
"name": "",
"type": "string"
}
],
"name": "verifiedProofs",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "user",
"type": "address"
},
{
"internalType": "enum IndyVerifier.CredentialType",
"name": "credType",
"type": "uint8"
},
{
"internalType": "bytes",
"name": "zkProof",
"type": "bytes"
},
{
"internalType": "uint256",
"name": "score",
"type": "uint256"
},
{
"internalType": "string",
"name": "proofId",
"type": "string"
}
],
"name": "verifyCredentialProof",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
],
"bytecode": "0x6080346200008857601f6200186c38819003918201601f19168301916001600160401b038311848410176200008d578084926020946040528339810103126200008857516001600160a01b0381168103620000885780620000646200007792620000a3565b50620000708162000123565b50620001c5565b506040516115e99081620002638239f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b031660008181527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5602052604081205490919060ff166200011f57818052816020526040822081835260205260408220600160ff1982541617905533916000805160206200184c8339815191528180a4600190565b5090565b6001600160a01b031660008181527f1da0b5176dfe03406af5a6eed66ca01dda9b45ac4da671c3fa379cb93717ef8160205260408120549091907f0ce23c3e399818cfee81a7ab0880f714e53d7672b08df0fa62f2843416e1ea099060ff16620001c057808352826020526040832082845260205260408320600160ff198254161790556000805160206200184c833981519152339380a4600190565b505090565b6001600160a01b031660008181527ff9c002f57bb53b4d861ae1ef1369a8087d06c8210e4846f897918d0e534663ce60205260408120549091907f114e74f6ea3bd819998f78687bfcb11b140da08e9b7d222fa9c1f1ba1f2aa1229060ff16620001c057808352826020526040832082845260205260408320600160ff198254161790556000805160206200184c833981519152339380a460019056fe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a714610fd157508063072545c314610f5f57806308b9e29e14610eeb578063248a9ca314610ebc5780632f2ff15d14610e7d57806336568abe14610e365780634eff245514610e1357806358ee601c14610bd057806382aefa2414610b9557806391d1485414610b4857806393377d7214610a79578063a217fddf14610a5d578063adb3b52c146106e2578063b0c7c7f91461064b578063d547741f1461060a578063e2ea3be6146101ec578063e50071fe146101255763e7705db6146100e557600080fd5b346101205760003660031901126101205760206040517f0ce23c3e399818cfee81a7ab0880f714e53d7672b08df0fa62f2843416e1ea098152f35b600080fd5b3461012057610174610136366110fa565b9060608060405161014681611024565b600081526000602082015260006040820152015260018060a01b031660005260016020526040600020611142565b60405161018081611024565b60ff825416151581526101e8600183015492602083019384526101b160036002830154926040860193845201611194565b90606084019182526040519485946020865251151560208601525160408501525160608401525160808084015260a0830190611239565b0390f35b346101205760a03660031901126101205760056004351015610120576024356001600160401b0381116101205761022790369060040161128e565b906044356001600160401b0381116101205761024790369060040161128e565b929060643590811515809203610120573360009081527ff9c002f57bb53b4d861ae1ef1369a8087d06c8210e4846f897918d0e534663ce60205260409020547f114e74f6ea3bd819998f78687bfcb11b140da08e9b7d222fa9c1f1ba1f2aa1229060ff16156105ec5750604051916102be8361103f565b6102c936858761107b565b83526102d636878461107b565b602084015260408301526102ef600435606084016112c8565b6084356080830152610302600435611129565b9482518051906001600160401b03821161053c57610320885461115a565b601f81116105ba575b50602090601f83116001146105525761035b929160009183610483575b50508160011b916000199060031b1c19161790565b86555b60208301518051906001600160401b03821161053c57610381600189015461115a565b601f81116104fc575b50602090601f831160011461048e576103bb9291600091836104835750508160011b916000199060031b1c19161790565b60018701555b60028601956103e260408501511515889060ff801983541691151516179055565b606084015196600588101561046d57608061046895827f0dfe99580899cff517188a2f95cc0e534a4b07723093e7b6a17e961b508e09f09a61ff00600395549160081b169061ff001916179055015191015561045a604051958695610449876004356112bb565b606060208801526060870191611406565b918483036040860152611406565b0390a1005b634e487b7160e01b600052602160045260246000fd5b015190508980610346565b90601f1983169160018a0160005260206000209260005b8181106104e457509084600195949392106104cb575b505050811b0160018701556103c1565b015160001960f88460031b161c191690558880806104bb565b929360206001819287860151815501950193016104a5565b61052c9060018a016000526020600020601f850160051c81019160208610610532575b601f0160051c0190611427565b8861038a565b909150819061051f565b634e487b7160e01b600052604160045260246000fd5b90601f198316918960005260206000209260005b8181106105a25750908460019594939210610589575b505050811b01865561035e565b015160001960f88460031b161c1916905588808061057c565b92936020600181928786015181550195019301610566565b6105e690896000526020600020601f850160051c8101916020861061053257601f0160051c0190611427565b88610329565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b34610120576040366003190112610120576106496004356106296110e4565b9080600052600060205261064460016040600020015461149a565b61153e565b005b34610120576020366003190112610120576004356005811015610120576106746106af91611129565b61067d81611194565b9061068a60018201611194565b6106d96106bd600360028501549401549260405196879660a0885260a0880190611239565b908682036020880152611239565b9260ff81161515604086015260ff606086019160081c166112bb565b60808301520390f35b346101205760a0366003190112610120576004356001600160a01b0381169081900361012057602435906005821015610120576001600160401b03906044358281116101205761073690369060040161128e565b5050606435926084358381116101205761075490369060040161128e565b61075c61143e565b61076e61076884611129565b5461115a565b15610a2057604051958183883760ff87838101600381526020998a910301902054166109e657600361079f85611129565b015481106109b1576040518284823787818481016003815203019020956001968760ff19825416179055604051906107d682611024565b878252600389830192848452604081014281526107f436888a61107b565b94606083019586528a6000528b8d5261082a6108148b6040600020611142565b93511515849060ff801983541691151516179055565b518b830155516002820155019151805191821161053c5761084b835461115a565b601f8111610981575b508990601f83116001146108eb57926108b1837f0a5ecc5bc2096792e0a9c35a3929f45e4eca9b9bdf4daa2e56cde87a8fe694459997946108d597946108c09a976000926108e05750508160011b916000199060031b1c19161790565b90555b604051958680966112bb565b89850152606060408501526060840191611406565b0390a2604051908152f35b015190508e80610346565b899291601f19831691856000528c600020928d6000905b82821061096a575050927f0a5ecc5bc2096792e0a9c35a3929f45e4eca9b9bdf4daa2e56cde87a8fe694459a98959285926108d599966108c09c999610610951575b505050811b0190556108b4565b015160001960f88460031b161c191690558d8080610944565b8385015186558e979095019493840193018e610902565b6109ab90846000528b600020601f850160051c8101918d861061053257601f0160051c0190611427565b8a610854565b60405162461bcd60e51b815260048101889052600d60248201526c53636f726520746f6f206c6f7760981b6044820152606490fd5b60405162461bcd60e51b8152600481018890526012602482015271141c9bdbd988185b1c9958591e481d5cd95960721b6044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527414d8da195b58481b9bdd081c9959da5cdd195c9959605a1b6044820152606490fd5b3461012057600036600319011261012057602060405160008152f35b346101205760207ff7f0da82636192f3d8eda823ab1c515bcc37accc15a245126f39b8e93717ed7e610aaa366110fa565b9290610ab461143e565b60018060a01b03169283600052600182526003610ad5826040600020611142565b60008155600060018201556000600282015501610af2815461115a565b9081610b0b575b5050610b0860405180926112bb565ba2005b81601f60009311600114610b235750555b8480610af9565b908083918252610b41601f878420940160051c840160018501611427565b5555610b1c565b3461012057604036600319011261012057610b616110e4565b600435600052600060205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346101205760003660031901126101205760206040517f114e74f6ea3bd819998f78687bfcb11b140da08e9b7d222fa9c1f1ba1f2aa1228152f35b346101205760a0366003190112610120576001600160401b0360043581811161012057610c0190369060040161125e565b909160243581811161012057610c1b90369060040161125e565b60449391933583811161012057610c3690369060040161125e565b949060643585811161012057610c5090369060040161125e565b9490956084351161012057610c6a3660843560040161125e565b949091610c7561143e565b81811480610e0a575b80610e01575b80610df8575b15610dbb5760005b818110610c9b57005b610ca681838d61139f565b356001600160a01b038116810361012057610cc282858961139f565b35600581101561012057898b91610d3393610d608f610d44610d018f8a908f8f95610cf2848092610cfa946113c5565b9b909c61139f565b35946113c5565b604051632b6ced4b60e21b81526001600160a01b039096166004870152949894979096899687969060248801906112bb565b60a0604487015260a4860191611406565b9060648401526003198382030160848401526020958695611406565b03816000305af18015610daf57610d7c575b5050600101610c92565b81813d8311610da8575b610d90818361105a565b81010312610120575180151503610120578b80610d72565b503d610d86565b6040513d6000823e3d90fd5b60405162461bcd60e51b8152602060048201526015602482015274082e4e4c2f240d8cadccee8d040dad2e6dac2e8c6d605b1b6044820152606490fd5b50858714610c8a565b50868914610c84565b50888214610c7e565b34610120576020610e2c610e26366110fa565b906112d4565b6040519015158152f35b3461012057604036600319011261012057610e4f6110e4565b336001600160a01b03821603610e6b576106499060043561153e565b60405163334bd91960e11b8152600490fd5b3461012057604036600319011261012057610649600435610e9c6110e4565b90806000526000602052610eb760016040600020015461149a565b6114c0565b346101205760203660031901126101205760043560005260006020526020600160406000200154604051908152f35b3461012057610f1a610efc366110fa565b6001600160a01b039091166000908152600160205260409020611142565b60ff8154166101e8600183015492610f39600360028301549201611194565b906040519485941515855260208501526040840152608060608401526080830190611239565b34610120576020366003190112610120576004356001600160401b03811161012057366023820112156101205760ff610fbb6020610fa88194369060248160040135910161107b565b81604051938285809451938492016110c1565b8101600381520301902054166040519015158152f35b34610120576020366003190112610120576004359063ffffffff60e01b821680920361012057602091637965db0b60e01b8114908115611013575b5015158152f35b6301ffc9a760e01b1490508361100c565b608081019081106001600160401b0382111761053c57604052565b60a081019081106001600160401b0382111761053c57604052565b90601f801991011681019081106001600160401b0382111761053c57604052565b9291926001600160401b03821161053c57604051916110a4601f8201601f19166020018461105a565b829481845281830111610120578281602093846000960137010152565b60005b8381106110d45750506000910152565b81810151838201526020016110c4565b602435906001600160a01b038216820361012057565b6040906003190112610120576004356001600160a01b0381168103610120579060243560058110156101205790565b600581101561046d576000526002602052604060002090565b90600581101561046d57600052602052604060002090565b90600182811c9216801561118a575b602083101461117457565b634e487b7160e01b600052602260045260246000fd5b91607f1691611169565b906040519182600082546111a78161115a565b9081845260209460019160018116908160001461121757506001146111d8575b5050506111d69250038361105a565b565b600090815285812095935091905b8183106111ff5750506111d693508201013880806111c7565b855488840185015294850194879450918301916111e6565b925050506111d694925060ff191682840152151560051b8201013880806111c7565b90602091611252815180928185528580860191016110c1565b601f01601f1916010190565b9181601f84011215610120578235916001600160401b038311610120576020808501948460051b01011161012057565b9181601f84011215610120578235916001600160401b038311610120576020838186019501011161012057565b90600582101561046d5752565b600582101561046d5752565b60018060a01b031660005260016020526112f2816040600020611142565b6040516112fe81611024565b60ff825416151581526113296003600184015493602084019485526002810154604085015201611194565b606082015251156113985761133f608092611129565b60036040519161134e8361103f565b61135781611194565b835261136560018201611194565b602084015261138b60ff60028301548181161515604087015260081c16606085016112c8565b0154928391015251101590565b5050600090565b91908110156113af5760051b0190565b634e487b7160e01b600052603260045260246000fd5b91908110156113af5760051b81013590601e19813603018212156101205701908135916001600160401b038311610120576020018236038113610120579190565b908060209392818452848401376000828201840152601f01601f1916010190565b818110611432575050565b60008155600101611427565b3360009081527f1da0b5176dfe03406af5a6eed66ca01dda9b45ac4da671c3fa379cb93717ef8160205260409020547f0ce23c3e399818cfee81a7ab0880f714e53d7672b08df0fa62f2843416e1ea099060ff16156105ec5750565b80600052600060205260406000203360005260205260ff60406000205416156105ec5750565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054161560001461153957808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054166000146115395780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a460019056fea264697066735822122066abacfc810630de70e197e89df855e5a92555c2a33f2815c46917daa6078df764736f6c634300081600332f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d",
"deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a714610fd157508063072545c314610f5f57806308b9e29e14610eeb578063248a9ca314610ebc5780632f2ff15d14610e7d57806336568abe14610e365780634eff245514610e1357806358ee601c14610bd057806382aefa2414610b9557806391d1485414610b4857806393377d7214610a79578063a217fddf14610a5d578063adb3b52c146106e2578063b0c7c7f91461064b578063d547741f1461060a578063e2ea3be6146101ec578063e50071fe146101255763e7705db6146100e557600080fd5b346101205760003660031901126101205760206040517f0ce23c3e399818cfee81a7ab0880f714e53d7672b08df0fa62f2843416e1ea098152f35b600080fd5b3461012057610174610136366110fa565b9060608060405161014681611024565b600081526000602082015260006040820152015260018060a01b031660005260016020526040600020611142565b60405161018081611024565b60ff825416151581526101e8600183015492602083019384526101b160036002830154926040860193845201611194565b90606084019182526040519485946020865251151560208601525160408501525160608401525160808084015260a0830190611239565b0390f35b346101205760a03660031901126101205760056004351015610120576024356001600160401b0381116101205761022790369060040161128e565b906044356001600160401b0381116101205761024790369060040161128e565b929060643590811515809203610120573360009081527ff9c002f57bb53b4d861ae1ef1369a8087d06c8210e4846f897918d0e534663ce60205260409020547f114e74f6ea3bd819998f78687bfcb11b140da08e9b7d222fa9c1f1ba1f2aa1229060ff16156105ec5750604051916102be8361103f565b6102c936858761107b565b83526102d636878461107b565b602084015260408301526102ef600435606084016112c8565b6084356080830152610302600435611129565b9482518051906001600160401b03821161053c57610320885461115a565b601f81116105ba575b50602090601f83116001146105525761035b929160009183610483575b50508160011b916000199060031b1c19161790565b86555b60208301518051906001600160401b03821161053c57610381600189015461115a565b601f81116104fc575b50602090601f831160011461048e576103bb9291600091836104835750508160011b916000199060031b1c19161790565b60018701555b60028601956103e260408501511515889060ff801983541691151516179055565b606084015196600588101561046d57608061046895827f0dfe99580899cff517188a2f95cc0e534a4b07723093e7b6a17e961b508e09f09a61ff00600395549160081b169061ff001916179055015191015561045a604051958695610449876004356112bb565b606060208801526060870191611406565b918483036040860152611406565b0390a1005b634e487b7160e01b600052602160045260246000fd5b015190508980610346565b90601f1983169160018a0160005260206000209260005b8181106104e457509084600195949392106104cb575b505050811b0160018701556103c1565b015160001960f88460031b161c191690558880806104bb565b929360206001819287860151815501950193016104a5565b61052c9060018a016000526020600020601f850160051c81019160208610610532575b601f0160051c0190611427565b8861038a565b909150819061051f565b634e487b7160e01b600052604160045260246000fd5b90601f198316918960005260206000209260005b8181106105a25750908460019594939210610589575b505050811b01865561035e565b015160001960f88460031b161c1916905588808061057c565b92936020600181928786015181550195019301610566565b6105e690896000526020600020601f850160051c8101916020861061053257601f0160051c0190611427565b88610329565b6044906040519063e2517d3f60e01b82523360048301526024820152fd5b34610120576040366003190112610120576106496004356106296110e4565b9080600052600060205261064460016040600020015461149a565b61153e565b005b34610120576020366003190112610120576004356005811015610120576106746106af91611129565b61067d81611194565b9061068a60018201611194565b6106d96106bd600360028501549401549260405196879660a0885260a0880190611239565b908682036020880152611239565b9260ff81161515604086015260ff606086019160081c166112bb565b60808301520390f35b346101205760a0366003190112610120576004356001600160a01b0381169081900361012057602435906005821015610120576001600160401b03906044358281116101205761073690369060040161128e565b5050606435926084358381116101205761075490369060040161128e565b61075c61143e565b61076e61076884611129565b5461115a565b15610a2057604051958183883760ff87838101600381526020998a910301902054166109e657600361079f85611129565b015481106109b1576040518284823787818481016003815203019020956001968760ff19825416179055604051906107d682611024565b878252600389830192848452604081014281526107f436888a61107b565b94606083019586528a6000528b8d5261082a6108148b6040600020611142565b93511515849060ff801983541691151516179055565b518b830155516002820155019151805191821161053c5761084b835461115a565b601f8111610981575b508990601f83116001146108eb57926108b1837f0a5ecc5bc2096792e0a9c35a3929f45e4eca9b9bdf4daa2e56cde87a8fe694459997946108d597946108c09a976000926108e05750508160011b916000199060031b1c19161790565b90555b604051958680966112bb565b89850152606060408501526060840191611406565b0390a2604051908152f35b015190508e80610346565b899291601f19831691856000528c600020928d6000905b82821061096a575050927f0a5ecc5bc2096792e0a9c35a3929f45e4eca9b9bdf4daa2e56cde87a8fe694459a98959285926108d599966108c09c999610610951575b505050811b0190556108b4565b015160001960f88460031b161c191690558d8080610944565b8385015186558e979095019493840193018e610902565b6109ab90846000528b600020601f850160051c8101918d861061053257601f0160051c0190611427565b8a610854565b60405162461bcd60e51b815260048101889052600d60248201526c53636f726520746f6f206c6f7760981b6044820152606490fd5b60405162461bcd60e51b8152600481018890526012602482015271141c9bdbd988185b1c9958591e481d5cd95960721b6044820152606490fd5b60405162461bcd60e51b815260206004820152601560248201527414d8da195b58481b9bdd081c9959da5cdd195c9959605a1b6044820152606490fd5b3461012057600036600319011261012057602060405160008152f35b346101205760207ff7f0da82636192f3d8eda823ab1c515bcc37accc15a245126f39b8e93717ed7e610aaa366110fa565b9290610ab461143e565b60018060a01b03169283600052600182526003610ad5826040600020611142565b60008155600060018201556000600282015501610af2815461115a565b9081610b0b575b5050610b0860405180926112bb565ba2005b81601f60009311600114610b235750555b8480610af9565b908083918252610b41601f878420940160051c840160018501611427565b5555610b1c565b3461012057604036600319011261012057610b616110e4565b600435600052600060205260406000209060018060a01b0316600052602052602060ff604060002054166040519015158152f35b346101205760003660031901126101205760206040517f114e74f6ea3bd819998f78687bfcb11b140da08e9b7d222fa9c1f1ba1f2aa1228152f35b346101205760a0366003190112610120576001600160401b0360043581811161012057610c0190369060040161125e565b909160243581811161012057610c1b90369060040161125e565b60449391933583811161012057610c3690369060040161125e565b949060643585811161012057610c5090369060040161125e565b9490956084351161012057610c6a3660843560040161125e565b949091610c7561143e565b81811480610e0a575b80610e01575b80610df8575b15610dbb5760005b818110610c9b57005b610ca681838d61139f565b356001600160a01b038116810361012057610cc282858961139f565b35600581101561012057898b91610d3393610d608f610d44610d018f8a908f8f95610cf2848092610cfa946113c5565b9b909c61139f565b35946113c5565b604051632b6ced4b60e21b81526001600160a01b039096166004870152949894979096899687969060248801906112bb565b60a0604487015260a4860191611406565b9060648401526003198382030160848401526020958695611406565b03816000305af18015610daf57610d7c575b5050600101610c92565b81813d8311610da8575b610d90818361105a565b81010312610120575180151503610120578b80610d72565b503d610d86565b6040513d6000823e3d90fd5b60405162461bcd60e51b8152602060048201526015602482015274082e4e4c2f240d8cadccee8d040dad2e6dac2e8c6d605b1b6044820152606490fd5b50858714610c8a565b50868914610c84565b50888214610c7e565b34610120576020610e2c610e26366110fa565b906112d4565b6040519015158152f35b3461012057604036600319011261012057610e4f6110e4565b336001600160a01b03821603610e6b576106499060043561153e565b60405163334bd91960e11b8152600490fd5b3461012057604036600319011261012057610649600435610e9c6110e4565b90806000526000602052610eb760016040600020015461149a565b6114c0565b346101205760203660031901126101205760043560005260006020526020600160406000200154604051908152f35b3461012057610f1a610efc366110fa565b6001600160a01b039091166000908152600160205260409020611142565b60ff8154166101e8600183015492610f39600360028301549201611194565b906040519485941515855260208501526040840152608060608401526080830190611239565b34610120576020366003190112610120576004356001600160401b03811161012057366023820112156101205760ff610fbb6020610fa88194369060248160040135910161107b565b81604051938285809451938492016110c1565b8101600381520301902054166040519015158152f35b34610120576020366003190112610120576004359063ffffffff60e01b821680920361012057602091637965db0b60e01b8114908115611013575b5015158152f35b6301ffc9a760e01b1490508361100c565b608081019081106001600160401b0382111761053c57604052565b60a081019081106001600160401b0382111761053c57604052565b90601f801991011681019081106001600160401b0382111761053c57604052565b9291926001600160401b03821161053c57604051916110a4601f8201601f19166020018461105a565b829481845281830111610120578281602093846000960137010152565b60005b8381106110d45750506000910152565b81810151838201526020016110c4565b602435906001600160a01b038216820361012057565b6040906003190112610120576004356001600160a01b0381168103610120579060243560058110156101205790565b600581101561046d576000526002602052604060002090565b90600581101561046d57600052602052604060002090565b90600182811c9216801561118a575b602083101461117457565b634e487b7160e01b600052602260045260246000fd5b91607f1691611169565b906040519182600082546111a78161115a565b9081845260209460019160018116908160001461121757506001146111d8575b5050506111d69250038361105a565b565b600090815285812095935091905b8183106111ff5750506111d693508201013880806111c7565b855488840185015294850194879450918301916111e6565b925050506111d694925060ff191682840152151560051b8201013880806111c7565b90602091611252815180928185528580860191016110c1565b601f01601f1916010190565b9181601f84011215610120578235916001600160401b038311610120576020808501948460051b01011161012057565b9181601f84011215610120578235916001600160401b038311610120576020838186019501011161012057565b90600582101561046d5752565b600582101561046d5752565b60018060a01b031660005260016020526112f2816040600020611142565b6040516112fe81611024565b60ff825416151581526113296003600184015493602084019485526002810154604085015201611194565b606082015251156113985761133f608092611129565b60036040519161134e8361103f565b61135781611194565b835261136560018201611194565b602084015261138b60ff60028301548181161515604087015260081c16606085016112c8565b0154928391015251101590565b5050600090565b91908110156113af5760051b0190565b634e487b7160e01b600052603260045260246000fd5b91908110156113af5760051b81013590601e19813603018212156101205701908135916001600160401b038311610120576020018236038113610120579190565b908060209392818452848401376000828201840152601f01601f1916010190565b818110611432575050565b60008155600101611427565b3360009081527f1da0b5176dfe03406af5a6eed66ca01dda9b45ac4da671c3fa379cb93717ef8160205260409020547f0ce23c3e399818cfee81a7ab0880f714e53d7672b08df0fa62f2843416e1ea099060ff16156105ec5750565b80600052600060205260406000203360005260205260ff60406000205416156105ec5750565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054161560001461153957808352826020526040832082845260205260408320600160ff198254161790557f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d339380a4600190565b505090565b9060009180835282602052604083209160018060a01b03169182845260205260ff6040842054166000146115395780835282602052604083208284526020526040832060ff1981541690557ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b339380a460019056fea264697066735822122066abacfc810630de70e197e89df855e5a92555c2a33f2815c46917daa6078df764736f6c63430008160033",
"linkReferences": {},
"deployedLinkReferences": {}
}