UNPKG

@settlemint/solidity-attestation-service

Version:
1,195 lines (1,193 loc) 90.8 kB
// This file was autogenerated by hardhat-viem, do not edit it. // prettier-ignore // tslint:disable // eslint-disable import type { Address } from "viem"; import type { AbiParameterToPrimitiveType, GetContractReturnType } from "@nomicfoundation/hardhat-viem/types"; import "@nomicfoundation/hardhat-viem/types"; export interface EAS$Type { "_format": "hh-sol-artifact-1", "contractName": "EAS", "sourceName": "@ethereum-attestation-service/eas-contracts/contracts/EAS.sol", "abi": [ { "inputs": [ { "internalType": "contract ISchemaRegistry", "name": "registry", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "AccessDenied", "type": "error" }, { "inputs": [], "name": "AlreadyRevoked", "type": "error" }, { "inputs": [], "name": "AlreadyRevokedOffchain", "type": "error" }, { "inputs": [], "name": "AlreadyTimestamped", "type": "error" }, { "inputs": [], "name": "DeadlineExpired", "type": "error" }, { "inputs": [], "name": "FailedCall", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "InsufficientBalance", "type": "error" }, { "inputs": [], "name": "InsufficientValue", "type": "error" }, { "inputs": [], "name": "InvalidAttestation", "type": "error" }, { "inputs": [], "name": "InvalidAttestations", "type": "error" }, { "inputs": [], "name": "InvalidExpirationTime", "type": "error" }, { "inputs": [], "name": "InvalidLength", "type": "error" }, { "inputs": [], "name": "InvalidNonce", "type": "error" }, { "inputs": [], "name": "InvalidOffset", "type": "error" }, { "inputs": [], "name": "InvalidRegistry", "type": "error" }, { "inputs": [], "name": "InvalidRevocation", "type": "error" }, { "inputs": [], "name": "InvalidRevocations", "type": "error" }, { "inputs": [], "name": "InvalidSchema", "type": "error" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [], "name": "InvalidSignature", "type": "error" }, { "inputs": [], "name": "InvalidVerifier", "type": "error" }, { "inputs": [], "name": "Irrevocable", "type": "error" }, { "inputs": [], "name": "NotFound", "type": "error" }, { "inputs": [], "name": "NotPayable", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "inputs": [], "name": "WrongSchema", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": true, "internalType": "address", "name": "attester", "type": "address" }, { "indexed": false, "internalType": "bytes32", "name": "uid", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "schemaUID", "type": "bytes32" } ], "name": "Attested", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "oldNonce", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newNonce", "type": "uint256" } ], "name": "NonceIncreased", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "recipient", "type": "address" }, { "indexed": true, "internalType": "address", "name": "attester", "type": "address" }, { "indexed": false, "internalType": "bytes32", "name": "uid", "type": "bytes32" }, { "indexed": true, "internalType": "bytes32", "name": "schemaUID", "type": "bytes32" } ], "name": "Revoked", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "revoker", "type": "address" }, { "indexed": true, "internalType": "bytes32", "name": "data", "type": "bytes32" }, { "indexed": true, "internalType": "uint64", "name": "timestamp", "type": "uint64" } ], "name": "RevokedOffchain", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "bytes32", "name": "data", "type": "bytes32" }, { "indexed": true, "internalType": "uint64", "name": "timestamp", "type": "uint64" } ], "name": "Timestamped", "type": "event" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "schema", "type": "bytes32" }, { "components": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint64", "name": "expirationTime", "type": "uint64" }, { "internalType": "bool", "name": "revocable", "type": "bool" }, { "internalType": "bytes32", "name": "refUID", "type": "bytes32" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct AttestationRequestData", "name": "data", "type": "tuple" } ], "internalType": "struct AttestationRequest", "name": "request", "type": "tuple" } ], "name": "attest", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "schema", "type": "bytes32" }, { "components": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint64", "name": "expirationTime", "type": "uint64" }, { "internalType": "bool", "name": "revocable", "type": "bool" }, { "internalType": "bytes32", "name": "refUID", "type": "bytes32" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct AttestationRequestData", "name": "data", "type": "tuple" }, { "components": [ { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "internalType": "struct Signature", "name": "signature", "type": "tuple" }, { "internalType": "address", "name": "attester", "type": "address" }, { "internalType": "uint64", "name": "deadline", "type": "uint64" } ], "internalType": "struct DelegatedAttestationRequest", "name": "delegatedRequest", "type": "tuple" } ], "name": "attestByDelegation", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAttestTypeHash", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "uid", "type": "bytes32" } ], "name": "getAttestation", "outputs": [ { "components": [ { "internalType": "bytes32", "name": "uid", "type": "bytes32" }, { "internalType": "bytes32", "name": "schema", "type": "bytes32" }, { "internalType": "uint64", "name": "time", "type": "uint64" }, { "internalType": "uint64", "name": "expirationTime", "type": "uint64" }, { "internalType": "uint64", "name": "revocationTime", "type": "uint64" }, { "internalType": "bytes32", "name": "refUID", "type": "bytes32" }, { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "address", "name": "attester", "type": "address" }, { "internalType": "bool", "name": "revocable", "type": "bool" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "internalType": "struct Attestation", "name": "", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getDomainSeparator", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getName", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getNonce", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "revoker", "type": "address" }, { "internalType": "bytes32", "name": "data", "type": "bytes32" } ], "name": "getRevokeOffchain", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRevokeTypeHash", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "pure", "type": "function" }, { "inputs": [], "name": "getSchemaRegistry", "outputs": [ { "internalType": "contract ISchemaRegistry", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "data", "type": "bytes32" } ], "name": "getTimestamp", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newNonce", "type": "uint256" } ], "name": "increaseNonce", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "uid", "type": "bytes32" } ], "name": "isAttestationValid", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "schema", "type": "bytes32" }, { "components": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint64", "name": "expirationTime", "type": "uint64" }, { "internalType": "bool", "name": "revocable", "type": "bool" }, { "internalType": "bytes32", "name": "refUID", "type": "bytes32" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct AttestationRequestData[]", "name": "data", "type": "tuple[]" } ], "internalType": "struct MultiAttestationRequest[]", "name": "multiRequests", "type": "tuple[]" } ], "name": "multiAttest", "outputs": [ { "internalType": "bytes32[]", "name": "", "type": "bytes32[]" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "schema", "type": "bytes32" }, { "components": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint64", "name": "expirationTime", "type": "uint64" }, { "internalType": "bool", "name": "revocable", "type": "bool" }, { "internalType": "bytes32", "name": "refUID", "type": "bytes32" }, { "internalType": "bytes", "name": "data", "type": "bytes" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct AttestationRequestData[]", "name": "data", "type": "tuple[]" }, { "components": [ { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "internalType": "struct Signature[]", "name": "signatures", "type": "tuple[]" }, { "internalType": "address", "name": "attester", "type": "address" }, { "internalType": "uint64", "name": "deadline", "type": "uint64" } ], "internalType": "struct MultiDelegatedAttestationRequest[]", "name": "multiDelegatedRequests", "type": "tuple[]" } ], "name": "multiAttestByDelegation", "outputs": [ { "internalType": "bytes32[]", "name": "", "type": "bytes32[]" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "schema", "type": "bytes32" }, { "components": [ { "internalType": "bytes32", "name": "uid", "type": "bytes32" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct RevocationRequestData[]", "name": "data", "type": "tuple[]" } ], "internalType": "struct MultiRevocationRequest[]", "name": "multiRequests", "type": "tuple[]" } ], "name": "multiRevoke", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "schema", "type": "bytes32" }, { "components": [ { "internalType": "bytes32", "name": "uid", "type": "bytes32" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct RevocationRequestData[]", "name": "data", "type": "tuple[]" }, { "components": [ { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "internalType": "struct Signature[]", "name": "signatures", "type": "tuple[]" }, { "internalType": "address", "name": "revoker", "type": "address" }, { "internalType": "uint64", "name": "deadline", "type": "uint64" } ], "internalType": "struct MultiDelegatedRevocationRequest[]", "name": "multiDelegatedRequests", "type": "tuple[]" } ], "name": "multiRevokeByDelegation", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bytes32[]", "name": "data", "type": "bytes32[]" } ], "name": "multiRevokeOffchain", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32[]", "name": "data", "type": "bytes32[]" } ], "name": "multiTimestamp", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "schema", "type": "bytes32" }, { "components": [ { "internalType": "bytes32", "name": "uid", "type": "bytes32" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct RevocationRequestData", "name": "data", "type": "tuple" } ], "internalType": "struct RevocationRequest", "name": "request", "type": "tuple" } ], "name": "revoke", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "components": [ { "internalType": "bytes32", "name": "schema", "type": "bytes32" }, { "components": [ { "internalType": "bytes32", "name": "uid", "type": "bytes32" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "internalType": "struct RevocationRequestData", "name": "data", "type": "tuple" }, { "components": [ { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "internalType": "struct Signature", "name": "signature", "type": "tuple" }, { "internalType": "address", "name": "revoker", "type": "address" }, { "internalType": "uint64", "name": "deadline", "type": "uint64" } ], "internalType": "struct DelegatedRevocationRequest", "name": "delegatedRequest", "type": "tuple" } ], "name": "revokeByDelegation", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "data", "type": "bytes32" } ], "name": "revokeOffchain", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes32", "name": "data", "type": "bytes32" } ], "name": "timestamp", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "version", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x6101e0806040523461032c57602081613e5080380380916100208285610330565b83398101031261032c57516001600160a01b0381169081810361032c576040519161004c604084610330565b60038352602083016245415360e81b81526040519061006c604083610330565b600582526020820190640312e332e360dc1b82526001608052600360a0525f60c05261009786610353565b610180526100a4836104d5565b6101a05285519020918261014052519020806101605246610100526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a0815261011060c082610330565b51902060e052306101205282516001600160401b03811161031857600254600181811c9116801561030e575b60208210146102fa57601f8111610297575b506020601f821160011461023457819293945f92610229575b50508160011b915f199060031b1c1916176002555b1561021a576101c052604051613842908161060e82396080518161081d015260a05181610848015260c05181610873015260e05181612e7901526101005181612f3601526101205181612e4301526101405181612ec801526101605181612eee015261018051816106d101526101a051816106fd01526101c0518181816101cd01528181611ad201528181611d01015281816120b0015261268a0152f35b6311a1e69760e01b5f5260045ffd5b015190505f80610167565b601f1982169060025f52805f20915f5b81811061027f57509583600195969710610267575b505050811b0160025561017c565b01515f1960f88460031b161c191690555f8080610259565b9192602060018192868b015181550194019201610244565b60025f527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace601f830160051c810191602084106102f0575b601f0160051c01905b8181106102e5575061014e565b5f81556001016102d8565b90915081906102cf565b634e487b7160e01b5f52602260045260245ffd5b90607f169061013c565b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b601f909101601f19168101906001600160401b0382119082101761031857604052565b908151602081105f146103cd575090601f81511161038d57602081519101516020821061037e571790565b5f198260200360031b1b161790565b604460209160405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b6001600160401b038111610318575f54600181811c911680156104cb575b60208210146102fa57601f8111610499575b50602092601f821160011461043a57928192935f9261042f575b50508160011b915f199060031b1c1916175f5560ff90565b015190505f80610417565b601f198216935f8052805f20915f5b8681106104815750836001959610610469575b505050811b015f5560ff90565b01515f1960f88460031b161c191690555f808061045c565b91926020600181928685015181550194019201610449565b5f8052601f60205f20910160051c810190601f830160051c015b8181106104c057506103fd565b5f81556001016104b3565b90607f16906103eb565b908151602081105f14610500575090601f81511161038d57602081519101516020821061037e571790565b6001600160401b03811161031857600154600181811c91168015610603575b60208210146102fa57601f81116105d0575b50602092601f821160011461056f57928192935f92610564575b50508160011b915f199060031b1c19161760015560ff90565b015190505f8061054b565b601f1982169360015f52805f20915f5b8681106105b857508360019596106105a0575b505050811b0160015560ff90565b01515f1960f88460031b161c191690555f8080610592565b9192602060018192868501518155019401920161057f565b60015f52601f60205f20910160051c810190601f830160051c015b8181106105f85750610531565b5f81556001016105eb565b90607f169061051f56fe6101206040526004361015610012575f80fd5b5f3560e01c80630eabf66014610d9357806312b11a1714610d5957806313893f6114610cea57806317d7de7c14610c205780632d0335ab14610be85780633c04271514610af857806344adc90e14610a1a57806346926267146109da5780634cb7e9e5146109295780634d0030701461090057806354fd4d50146107fe57806379f7573a1461078657806384b0196e146106b957806395411525146104c6578063a3112a641461047b578063a6d4dbc7146103a4578063b469318d14610357578063b83010d31461031d578063cf190f34146102f3578063d45c4435146102c0578063e30bb5631461028c578063e71ff3651461021e578063ed24911d146101fc578063f10b5cc8146101b85763f17325e71461012d575f80fd5b60203660031901126101b4576004356001600160401b0381116101b45780600401604060031983360301126101b45760206101a481936101ab936101866101726114e1565b92610181602436920184611546565b611425565b61018f836112ff565b52610199826112ff565b503491339135612067565b01516112ff565b51604051908152f35b5f80fd5b346101b4575f3660031901126101b4576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101b4575f3660031901126101b4576020610216612e40565b604051908152f35b346101b45760203660031901126101b4576004356001600160401b0381116101b45761024e903690600401610f94565b906001600160401b034216915f5b81811061026e57602084604051908152f35b80610286856102806001948688611341565b35612c61565b0161025c565b346101b45760203660031901126101b45760206102b66004355f52600460205260405f2054151590565b6040519015158152f35b346101b45760203660031901126101b4576004355f52600560205260206001600160401b0360405f205416604051908152f35b346101b45760203660031901126101b45760206001600160401b0342166102168160043533611ea2565b346101b4575f3660031901126101b45760206040517fb5d556f07587ec0f08cf386545cc4362c702a001650c2058002615ee5c9d1e758152f35b346101b45760403660031901126101b4576001600160a01b03610378610fe8565b165f52600660205260405f206024355f5260205260206001600160401b0360405f205416604051908152f35b6101003660031901126101b4576040516103bd81611142565b6004358082526103cc36611216565b602083015260603660631901126101b4576040516103e98161118c565b60643560ff811681036101b4578152608435602082015260a43560408083019190915283015260c4356001600160a01b03811681036101b45780606084015260e4356001600160401b03811681036101b4578361044d91608061047996015261182b565b61045561167a565b61045e36611216565b610467826112ff565b52610471816112ff565b503492611ab5565b005b346101b45760203660031901126101b45761049461172d565b506004355f5260046020526104c26104ae60405f20611777565b60405191829160208352602083019061107e565b0390f35b60203660031901126101b4576004356001600160401b0381116101b4576104f1903690600401610f94565b6104fa8161156f565b5f9290915f198101913491855b818110610527576104c261051b8888612bf9565b60405191829182611012565b61053681838598969798611120565b9661054460208901896115da565b929091831580156106a1575b6106925789965f98959895604089019560608a019a60808b359b0135996001600160401b038b16809b1415995b83811015610624578f906105a08b61059a8360051b8d018d611546565b936116f8565b821015610610578f6105b28e9161155b565b906101b4578f908f906105ef61060a946105de600198604051966105d588611142565b87523690611425565b6020860152369060608802016112ad565b6040840152858060a01b031660608301526080820152611f26565b0161057d565b634e487b7160e01b5f52603260045260245ffd5b509a8d9e50839a50610660949c93929199506001985061065a6106699698889f6106529060209a149661155b565b93369161160f565b9061263a565b95865190611320565b94018051610677898961130c565b52610682888861130c565b5051510196949592939201610507565b63251f56a160e21b5f5260045ffd5b506106af60408b018b6116f8565b9050841415610550565b346101b4575f3660031901126101b4576107586106f57f000000000000000000000000000000000000000000000000000000000000000061345b565b6104c26107217f00000000000000000000000000000000000000000000000000000000000000006134ba565b610766604051916107336020846111de565b5f83525f368137604051958695600f60f81b875260e0602088015260e0870190610fc4565b908582036040870152610fc4565b904660608501523060808501525f60a085015283820360c085015261104b565b346101b45760203660031901126101b457600435335f52600360205260405f205490818111156107ef577f57b09af877df9068fd60a69d7b21f5576b8b38955812d6ae4ac52942f1e38fb791604091335f52600360205280835f205582519182526020820152a1005b633ab3447f60e11b5f5260045ffd5b346101b4575f3660031901126101b4576104c260206108ec60016108417f0000000000000000000000000000000000000000000000000000000000000000612cd3565b818461086c7f0000000000000000000000000000000000000000000000000000000000000000612cd3565b81806108977f0000000000000000000000000000000000000000000000000000000000000000612cd3565b9260405199878b985191829101848a015e870190601760f91b83830152805192839101602183015e010190601760f91b84830152805192839101600283015e01015f838201520301601f1981018352826111de565b604051918291602083526020830190610fc4565b346101b45760203660031901126101b45760206001600160401b03421661021681600435612c61565b60203660031901126101b4576004356001600160401b0381116101b457610954903690600401610f94565b5f19810191905f90345b81831061096757005b6109728383866115b8565b6020810135601e19823603018112156101b4578101918235926001600160401b0384116101b457602001928060061b360384136101b457600193826109cc926109d2956109c58c8b14943393369161123e565b9035611ce0565b90611320565b92019161095e565b60603660031901126101b4576104796109f161167a565b6109fa36611216565b610a03826112ff565b52610a0d816112ff565b5034903390600435611ab5565b60203660031901126101b4576004356001600160401b0381116101b457610a45903690600401610f94565b90610a4f8261156f565b915f9134905f925f198101905b808510610a70576104c261051b8789612bf9565b9091929394610a808683866115b8565b906020820191610a9083826115da565b90501561069257610ad0610ac789898885610ac0610ab260019a6020996115da565b93909514943393369161160f565b903561263a565b97885190611320565b96018051610ade898b61130c565b52610ae9888a61130c565b50515101950193929190610a5c565b60203660031901126101b4576004356001600160401b0381116101b457806004019060e060031982360301126101b457604051610b3481611142565b82359283825260248301938435946001600160401b0386116101b457610be06101ab95610bc76101a495610bb460209a98610b768c9a60043691880101611425565b8a820152610b8736604487016112ad565b6040820152610baa60c460a4870196610b9f88610ffe565b6060850152016112eb565b6080820152611f26565b610181610bbf6114e1565b953692611546565b610bd0846112ff565b52610bda836112ff565b5061155b565b903492612067565b346101b45760203660031901126101b4576001600160a01b03610c09610fe8565b165f526003602052602060405f2054604051908152f35b346101b4575f3660031901126101b4576040515f600254610c4081611351565b8084529060018116908115610cc65750600114610c68575b6104c2836108ec818503826111de565b60025f9081527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace939250905b808210610cac575090915081016020016108ec610c58565b919260018160209254838588010152019101909291610c94565b60ff191660208086019190915291151560051b840190910191506108ec9050610c58565b346101b45760203660031901126101b4576004356001600160401b0381116101b457610d1a903690600401610f94565b906001600160401b034216915f5b818110610d3a57602084604051908152f35b80610d5385610d4c6001948688611341565b3533611ea2565b01610d28565b346101b4575f3660031901126101b45760206040517ffeb2925a02bae3dae48d424a0437a2b6ac939aa9230ddc55a1a76f065d9880768152f35b60203660031901126101b4576004356001600160401b0381116101b457610dbe903690600401610f94565b5f198101915f91345b818410610dd057005b610ddb848385611120565b60a0813603126101b457604051610df181611142565b8135815260208201356001600160401b0381116101b457820136601f820112156101b457610e2690369060208135910161123e565b906020810191825260408301356001600160401b0381116101b457830136601f820112156101b457803590610e5a826111ff565b91610e6860405193846111de565b808352602060608185019202830101913683116101b457602001905b828210610f7a5750505060408201818152610eb46080610ea660608801610ffe565b9660608601978852016112eb565b936080840194855251938451928315908115610f6e575b50610692575f5b838110610f0b57505091519351600195610f039590946109cc94508a8c14935085926001600160a01b031691611ce0565b930192610dc7565b600190610f688651610f1d838a61130c565b51610f2984885161130c565b51858060a01b038c5116906001600160401b038851169260405194610f4d86611142565b8552602085015260408401526060830152608082015261182b565b01610ed2565b9050518314158c610ecb565b6020606091610f8936856112ad565b815201910190610e84565b9181601f840112156101b4578235916001600160401b0383116101b4576020808501948460051b0101116101b457565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036101b457565b35906001600160a01b03821682036101b457565b60206040818301928281528451809452019201905f5b8181106110355750505090565b8251845260209384019390920191600101611028565b90602080835192838152019201905f5b8181106110685750505090565b825184526020938401939092019160010161105b565b9061014061012061111d9380518452602081015160208501526001600160401b0360408201511660408501526001600160401b0360608201511660608501526001600160401b03608082015116608085015260a081015160a085015260018060a01b0360c08201511660c085015260018060a01b0360e08201511660e08501526101008101511515610100850152015191816101208201520190610fc4565b90565b91908110156106105760051b81013590609e19813603018212156101b4570190565b60a081019081106001600160401b0382111761115d57604052565b634e487b7160e01b5f52604160045260245ffd5b604081019081106001600160401b0382111761115d57604052565b606081019081106001600160401b0382111761115d57604052565b60c081019081106001600160401b0382111761115d57604052565b61014081019081106001600160401b0382111761115d57604052565b90601f801991011681019081106001600160401b0382111761115d57604052565b6001600160401b03811161115d5760051b60200190565b60409060231901126101b4576040519061122f82611171565b60243582526044356020830152565b92919261124a826111ff565b9361125860405195866111de565b602085848152019260061b8201918183116101b457925b82841061127c5750505050565b6040848303126101b4576020604091825161129681611171565b86358152828701358382015281520193019261126f565b91908260609103126101b4576040516112c58161118c565b8092803560ff811681036101b45760409182918452602081013560208501520135910152565b35906001600160401b03821682036101b457565b8051156106105760200190565b80518210156106105760209160051b010190565b9190820391821161132d57565b634e487b7160e01b5f52601160045260245ffd5b91908110156106105760051b0190565b90600182811c9216801561137f575b602083101461136b57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611360565b5f929181549161139883611351565b80835292600181169081156113ed57506001146113b457505050565b5f9081526020812093945091925b8383106113d3575060209250010190565b6001816020929493945483858701015201910191906113c2565b915050602093945060ff929192191683830152151560051b010190565b6001600160401b03811161115d57601f01601f191660200190565b919060c0838203126101b4576040519061143e826111a7565b819361144981610ffe565b8352611457602082016112eb565b6020840152604081013580151581036101b45760408401526060810135606084015260808101356001600160401b0381116101b45781019082601f830112156101b4578135926114a68461140a565b906114b460405192836111de565b848252602085850101116101b4575f60208560a09682889701838601378301015260808501520135910152565b604080519091906114f283826111de565b6001815291601f1901825f5b82811061150a57505050565b602090604051611519816111a7565b5f81525f838201525f60408201525f6060820152606060808201525f60a0820152828285010152016114fe565b90359060be19813603018212156101b4570190565b356001600160a01b03811681036101b45790565b90611579826111ff565b61158660405191826111de565b8281528092611597601f19916111ff565b01905f5b8281106115a757505050565b80606060208093850101520161159b565b91908110156106105760051b81013590603e19813603018212156101b4570190565b903590601e19813603018212156101b457018035906001600160401b0382116101b457602001918160051b360383136101b457565b92919061161b816111ff565b9361162960405195866111de565b602085838152019160051b8101918383116101b45781905b83821061164f575050505050565b81356001600160401b0381116101b45760209161166f8784938701611425565b815201910190611641565b6040805190919061168b83826111de565b6001815291601f1901825f5b8281106116a357505050565b6020906040516116b281611171565b5f81525f8382015282828501015201611697565b906116d0826111ff565b6116dd60405191826111de565b82815280926116ee601f19916111ff565b0190602036910137565b903590601e19813603018212156101b457018035906001600160401b0382116101b4576020019160608202360383136101b457565b6040519061173a826111c2565b6060610120835f81525f60208201525f60408201525f838201525f60808201525f60a08201525f60c08201525f60e08201525f6101008201520152565b906006610120604051611789816111c2565b611819819580548352600181015460208401526001600160401b0360028201548181166040860152818160401c16606086015260801c166080840152600381015460a084015260018060a01b0360048201541660c084015260ff600582015460018060a01b03811660e086015260a01c1615156101008401526118126040518096819301611389565b03846111de565b0152565b5f19811461132d5760010190565b608081016001600160401b038151168015159081611973575b5061196457816118fd602061194e94015191604081015193606082019360018060a01b0385511692519160208251920151845f5260036020526001600160401b0360405f20928354936118968561181d565b90555116926040519460208601967fb5d556f07587ec0f08cf386545cc4362c702a001650c2058002615ee5c9d1e75885260408701526060860152608085015260a084015260c083015260e082015260e081526118f5610100826111de565b519020612f5c565b9051602083810151604080860151955181519384019290925282019490945260f89390931b6001600160f81b0319166060840152604183526001600160a01b03166119496061846111de565b612f82565b1561195557565b638baa579f60e01b5f5260045ffd5b631ab7da6b60e01b5f5260045ffd5b90506001600160401b034216115f611844565b519081151582036101b457565b6020818303126101b4578051906001600160401b0382116101b45701906080828203126101b45760405191608083018381106001600160401b0382111761115d576040528051835260208101516001600160a01b03811681036101b4576020840152611a0160408201611986565b60408401526060810151906001600160401b0382116101b4570181601f820112156101b457805190611a328261140a565b92611a4060405194856111de565b828452602083830101116101b457815f9260208093018386015e83010152606082015290565b90611a70826111ff565b611a7d60405191826111de565b8281528092611a8e601f19916111ff565b01905f5b828110611a9e57505050565b602090611aa961172d565b82828501015201611a92565b6040516351753e3760e11b81526004810182905290915f826024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa918215611cd5575f92611cb1575b50815115611c93578051611b1d81611a66565b93611b27826116c6565b95426001600160401b0316935f5b848110611b50575050505050509161111d93916001936130ca565b611b5a818361130c565b519081515f52600460205260405f2091825415611ca25785600184015403611c935760058301546001600160a01b0386811691908116829003611c845760a01c60ff1615611c755760028401916001600160401b03835460801c16611c6657825467ffffffffffffffff60801b191660808b901b67ffffffffffffffff60801b16179092556001938792908c90611c01908690611bfb90611777565b611777565b9261130c565b52611c0c848d61130c565b506020810151611c1c858f61130c565b527ff930a6e2523c9cc298691873087a740550b8fc85a0680830414c148ed927f61560208d60c0611c53888a8060a01b039361130c565b510151169251604051908152a401611b35565b63905e710760e01b5f5260045ffd5b63157bd4c360e01b5f5260045ffd5b634ca8886760e01b5f5260045ffd5b635f9bd90760e11b5f5260045ffd5b63c5723b5160e01b5f5260045ffd5b611cce9192503d805f833e611cc681836111de565b810190611993565b905f611b0a565b6040513d5f823e3d90fd5b6040516351753e3760e11b8152600481018290529195949392915f816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa908115611cd5575f91611e88575b50805115611c93578651611d4c81611a66565b92611d56826116c6565b945f996001600160401b0342169a5b848110611d7c57505050505061111d9596506130ca565b611d86818361130c565b519081515f52600460205260405f2091825415611ca25785600184015403611c935760058301546001600160a01b0386811691908116829003611c845760a01c60ff1615611c755760028401916001600160401b03835460801c16611c66578f600195611bf6611e19928b96908154906001600160401b0360801b9060801b16906001600160401b0360801b1916179055565b611e23858d61130c565b52611e2e848c61130c565b506020810151611e3e858e61130c565b527ff930a6e2523c9cc298691873087a740550b8fc85a0680830414c148ed927f61560208c60c0611e75888a8060a01b039361130c565b510151169251604051908152a401611d65565b611e9c91503d805f833e611cc681836111de565b5f611d39565b60018060a01b031691825f52600660205260405f2090825f52816020526001600160401b0360405f205416611f17576001600160401b0391835f5260205260405f20828216831982541617905516917f92a1f7a41a7c585a8b09e25b195e225b1d43248daca46b0faf9e0792777a22295f80a4565b63ec9d6eeb60e01b5f5260045ffd5b608081016001600160401b03815116801515908161203b575b5061196457816118fd602061194e94015191604081015193606082019360018060a01b0385511692519160018060a01b03825116916001600160401b03602082015116906040810151151560608201519060a060808401516020815191012093015193885f5260036020526001600160401b0360405f2096875497611fc38961181d565b90555116966040519860208a019a7ffeb2925a02bae3dae48d424a0437a2b6ac939aa9230ddc55a1a76f065d9880768c5260408b015260608a0152608089015260a088015260c087015260e086015261010085015261012084015261014083015261016082015261016081526118f5610180826111de565b90506001600160401b034216115f611f3f565b6040519061205b82611171565b60606020835f81520152565b919260e05261207461204e565b5080519061208061204e565b6101005261208d826116c6565b61010051602001526040516351753e3760e11b8152600481018490525f816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015611cd5575f60805261261e575b506080515115611c935790916120fe83611a66565b60a05261210a836116c6565b60c0525f915b83831061213e575050505050612132600160e05160c05160a0516080516132b4565b61010051526101005190565b61214e838297939495969761130c565b519160208301956001600160401b03875116801515908161260a575b506125fb576040608051015115806125ee575b611c75576001600160401b0360608501519751169660018060a01b0385511660408601511515906080870151926040519a6121b78c6111c2565b5f8c528960208d01526001600160401b03421660408d015260608c01525f60808c015260a08b015260c08a015260018060a01b038a1660e08a01526101008901526101208801525f5b6020880151886122d06004609960c0840151602060e086015195604081015190606081015161010082015115159061012060a0840151930151936040519a8b978789019d8e526001600160601b03199060601b1660408901526001600160601b03199060601b1660548801526001600160401b0360c01b9060c01b1660688701526001600160401b0360c01b9060c01b16607086015260f81b607885015260798401528051918291018484015e810163ffffffff60e01b8860e01b16838201520301601b198101845201826111de565b519020805f52600460205260405f2054156122f4575060010163ffffffff16612200565b905097969094959197939293808252805f52600460205260405f209180518355602081015160018401556123a2600284016001600160401b0380604085015116166001600160401b0319825416178155606083015167ffffffffffffffff60401b82549160401b169067ffffffffffffffff60401b19161781556001600160401b036080840151168154906001600160401b0360801b9060801b16906001600160401b0360801b1916179055565b60a081810151600385015560c08201516004850180546001600160a01b0319166001600160a01b0392831617905560e08301516005860180546101008601516001600160a81b0319909116929093169190911791151590921b60ff60a01b1617905561012081015180519093906001600160401b03811161115d57899461242c6006840154611351565b601f8111612596575b50602090601f831160011461252857600692915f918361251d575b50508160011b915f199060031b1c1