{
  "contractName": "MetadataRegistry",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "issuerVc",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "listId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes2",
          "name": "credentialType",
          "type": "bytes2"
        },
        {
          "indexed": false,
          "internalType": "uint32",
          "name": "index",
          "type": "uint32"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "traceId",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "caoDid",
          "type": "string"
        }
      ],
      "name": "AddedCredentialMetadata",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "issuerVc",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "listId",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "traceId",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "caoDid",
          "type": "string"
        }
      ],
      "name": "CreatedMetadataList",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "bytes2",
              "name": "version",
              "type": "bytes2"
            },
            {
              "internalType": "bytes2",
              "name": "credentialType",
              "type": "bytes2"
            },
            {
              "internalType": "bytes2",
              "name": "algType",
              "type": "bytes2"
            },
            {
              "internalType": "bytes",
              "name": "encryptedPublicKey",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "issuerVc",
              "type": "bytes"
            }
          ],
          "indexed": false,
          "internalType": "struct MetadataRegistry.CredentialMetadata[]",
          "name": "credentialMetadataList",
          "type": "tuple[]"
        }
      ],
      "name": "GotCredentialMetadata",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "bytes2",
          "name": "",
          "type": "bytes2"
        }
      ],
      "name": "freeCredentialTypes",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "lists",
      "outputs": [
        {
          "internalType": "bytes2",
          "name": "version",
          "type": "bytes2"
        },
        {
          "internalType": "bytes2",
          "name": "algType",
          "type": "bytes2"
        },
        {
          "internalType": "bytes",
          "name": "issuerVc",
          "type": "bytes"
        },
        {
          "internalType": "bool",
          "name": "used",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_coupon",
          "type": "address"
        },
        {
          "internalType": "bytes2[]",
          "name": "freeCredentialTypesList",
          "type": "bytes2[]"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_permissions",
          "type": "address"
        }
      ],
      "name": "setPermissionsAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getPermissionsAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_coupon",
          "type": "address"
        }
      ],
      "name": "setCouponAddress",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "accountId",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "listId",
          "type": "uint256"
        }
      ],
      "name": "isExistMetadataList",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "listId",
          "type": "uint256"
        },
        {
          "internalType": "bytes2",
          "name": "algType",
          "type": "bytes2"
        },
        {
          "internalType": "bytes2",
          "name": "version",
          "type": "bytes2"
        },
        {
          "internalType": "bytes",
          "name": "issuerVc",
          "type": "bytes"
        },
        {
          "internalType": "string",
          "name": "traceId",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "caoDid",
          "type": "string"
        }
      ],
      "name": "newMetadataList",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "listId",
          "type": "uint256"
        },
        {
          "internalType": "bytes2",
          "name": "algType",
          "type": "bytes2"
        },
        {
          "internalType": "bytes2",
          "name": "version",
          "type": "bytes2"
        },
        {
          "internalType": "bytes",
          "name": "issuerVc",
          "type": "bytes"
        },
        {
          "internalType": "string",
          "name": "traceId",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "caoDid",
          "type": "string"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "newMetadataListSigned",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes2",
          "name": "credentialType",
          "type": "bytes2"
        },
        {
          "internalType": "bytes",
          "name": "encryptedPublicKey",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "listId",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "index",
          "type": "uint32"
        },
        {
          "internalType": "string",
          "name": "traceId",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "caoDid",
          "type": "string"
        }
      ],
      "name": "setEntry",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes2",
          "name": "credentialType",
          "type": "bytes2"
        },
        {
          "internalType": "bytes",
          "name": "encryptedPublicKey",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "listId",
          "type": "uint256"
        },
        {
          "internalType": "uint32",
          "name": "index",
          "type": "uint32"
        },
        {
          "internalType": "string",
          "name": "traceId",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "caoDid",
          "type": "string"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "setEntrySigned",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes2[]",
          "name": "freeCredentialTypesList",
          "type": "bytes2[]"
        }
      ],
      "name": "addFreeTypes",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes2[]",
          "name": "freeCredentialTypesList",
          "type": "bytes2[]"
        }
      ],
      "name": "removeFreeTypes",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes2",
          "name": "credentialType",
          "type": "bytes2"
        }
      ],
      "name": "isFreeCredentialType",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "accountId",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "listId",
              "type": "uint256"
            },
            {
              "internalType": "uint32",
              "name": "index",
              "type": "uint32"
            }
          ],
          "internalType": "struct MetadataRegistry.CredentialIdentifier[]",
          "name": "_entryIndexes",
          "type": "tuple[]"
        }
      ],
      "name": "getFreeEntries",
      "outputs": [
        {
          "components": [
            {
              "internalType": "bytes2",
              "name": "version",
              "type": "bytes2"
            },
            {
              "internalType": "bytes2",
              "name": "credentialType",
              "type": "bytes2"
            },
            {
              "internalType": "bytes2",
              "name": "algType",
              "type": "bytes2"
            },
            {
              "internalType": "bytes",
              "name": "encryptedPublicKey",
              "type": "bytes"
            },
            {
              "internalType": "bytes",
              "name": "issuerVc",
              "type": "bytes"
            }
          ],
          "internalType": "struct MetadataRegistry.CredentialMetadata[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "accountId",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "listId",
              "type": "uint256"
            },
            {
              "internalType": "uint32",
              "name": "index",
              "type": "uint32"
            }
          ],
          "internalType": "struct MetadataRegistry.CredentialIdentifier[]",
          "name": "_entryIndexes",
          "type": "tuple[]"
        },
        {
          "internalType": "string",
          "name": "traceId",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "caoDid",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "burnerDid",
          "type": "string"
        }
      ],
      "name": "getPaidEntries",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "accountId",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "listId",
              "type": "uint256"
            },
            {
              "internalType": "uint32",
              "name": "index",
              "type": "uint32"
            }
          ],
          "internalType": "struct MetadataRegistry.CredentialIdentifier[]",
          "name": "_entryIndexes",
          "type": "tuple[]"
        },
        {
          "internalType": "string",
          "name": "traceId",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "caoDid",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "burnerDid",
          "type": "string"
        },
        {
          "internalType": "bytes",
          "name": "signature",
          "type": "bytes"
        }
      ],
      "name": "getPaidEntriesSigned",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "operator",
          "type": "address"
        },
        {
          "internalType": "bytes2",
          "name": "credentialType",
          "type": "bytes2"
        }
      ],
      "name": "checkOperatorWithCredentialType",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "a",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "b",
          "type": "string"
        }
      ],
      "name": "isEqual",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.8.4+commit.c7e474f2\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"issuerVc\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"listId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes2\",\"name\":\"credentialType\",\"type\":\"bytes2\"},{\"indexed\":false,\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"traceId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"caoDid\",\"type\":\"string\"}],\"name\":\"AddedCredentialMetadata\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"issuerVc\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"listId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"traceId\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"caoDid\",\"type\":\"string\"}],\"name\":\"CreatedMetadataList\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"components\":[{\"internalType\":\"bytes2\",\"name\":\"version\",\"type\":\"bytes2\"},{\"internalType\":\"bytes2\",\"name\":\"credentialType\",\"type\":\"bytes2\"},{\"internalType\":\"bytes2\",\"name\":\"algType\",\"type\":\"bytes2\"},{\"internalType\":\"bytes\",\"name\":\"encryptedPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"issuerVc\",\"type\":\"bytes\"}],\"indexed\":false,\"internalType\":\"struct MetadataRegistry.CredentialMetadata[]\",\"name\":\"credentialMetadataList\",\"type\":\"tuple[]\"}],\"name\":\"GotCredentialMetadata\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"version\",\"type\":\"uint8\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"bytes2[]\",\"name\":\"freeCredentialTypesList\",\"type\":\"bytes2[]\"}],\"name\":\"addFreeTypes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes2\",\"name\":\"credentialType\",\"type\":\"bytes2\"}],\"name\":\"checkOperatorWithCredentialType\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes2\",\"name\":\"\",\"type\":\"bytes2\"}],\"name\":\"freeCredentialTypes\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"accountId\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"listId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"internalType\":\"struct MetadataRegistry.CredentialIdentifier[]\",\"name\":\"_entryIndexes\",\"type\":\"tuple[]\"}],\"name\":\"getFreeEntries\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes2\",\"name\":\"version\",\"type\":\"bytes2\"},{\"internalType\":\"bytes2\",\"name\":\"credentialType\",\"type\":\"bytes2\"},{\"internalType\":\"bytes2\",\"name\":\"algType\",\"type\":\"bytes2\"},{\"internalType\":\"bytes\",\"name\":\"encryptedPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"issuerVc\",\"type\":\"bytes\"}],\"internalType\":\"struct MetadataRegistry.CredentialMetadata[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"accountId\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"listId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"internalType\":\"struct MetadataRegistry.CredentialIdentifier[]\",\"name\":\"_entryIndexes\",\"type\":\"tuple[]\"},{\"internalType\":\"string\",\"name\":\"traceId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"caoDid\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"burnerDid\",\"type\":\"string\"}],\"name\":\"getPaidEntries\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"accountId\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"listId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"}],\"internalType\":\"struct MetadataRegistry.CredentialIdentifier[]\",\"name\":\"_entryIndexes\",\"type\":\"tuple[]\"},{\"internalType\":\"string\",\"name\":\"traceId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"caoDid\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"burnerDid\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"getPaidEntriesSigned\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getPermissionsAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_coupon\",\"type\":\"address\"},{\"internalType\":\"bytes2[]\",\"name\":\"freeCredentialTypesList\",\"type\":\"bytes2[]\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"string\",\"name\":\"a\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"b\",\"type\":\"string\"}],\"name\":\"isEqual\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"accountId\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"listId\",\"type\":\"uint256\"}],\"name\":\"isExistMetadataList\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes2\",\"name\":\"credentialType\",\"type\":\"bytes2\"}],\"name\":\"isFreeCredentialType\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"lists\",\"outputs\":[{\"internalType\":\"bytes2\",\"name\":\"version\",\"type\":\"bytes2\"},{\"internalType\":\"bytes2\",\"name\":\"algType\",\"type\":\"bytes2\"},{\"internalType\":\"bytes\",\"name\":\"issuerVc\",\"type\":\"bytes\"},{\"internalType\":\"bool\",\"name\":\"used\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"listId\",\"type\":\"uint256\"},{\"internalType\":\"bytes2\",\"name\":\"algType\",\"type\":\"bytes2\"},{\"internalType\":\"bytes2\",\"name\":\"version\",\"type\":\"bytes2\"},{\"internalType\":\"bytes\",\"name\":\"issuerVc\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"traceId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"caoDid\",\"type\":\"string\"}],\"name\":\"newMetadataList\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"listId\",\"type\":\"uint256\"},{\"internalType\":\"bytes2\",\"name\":\"algType\",\"type\":\"bytes2\"},{\"internalType\":\"bytes2\",\"name\":\"version\",\"type\":\"bytes2\"},{\"internalType\":\"bytes\",\"name\":\"issuerVc\",\"type\":\"bytes\"},{\"internalType\":\"string\",\"name\":\"traceId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"caoDid\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"newMetadataListSigned\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes2[]\",\"name\":\"freeCredentialTypesList\",\"type\":\"bytes2[]\"}],\"name\":\"removeFreeTypes\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_coupon\",\"type\":\"address\"}],\"name\":\"setCouponAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes2\",\"name\":\"credentialType\",\"type\":\"bytes2\"},{\"internalType\":\"bytes\",\"name\":\"encryptedPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"listId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"traceId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"caoDid\",\"type\":\"string\"}],\"name\":\"setEntry\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes2\",\"name\":\"credentialType\",\"type\":\"bytes2\"},{\"internalType\":\"bytes\",\"name\":\"encryptedPublicKey\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"listId\",\"type\":\"uint256\"},{\"internalType\":\"uint32\",\"name\":\"index\",\"type\":\"uint32\"},{\"internalType\":\"string\",\"name\":\"traceId\",\"type\":\"string\"},{\"internalType\":\"string\",\"name\":\"caoDid\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\"}],\"name\":\"setEntrySigned\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_permissions\",\"type\":\"address\"}],\"name\":\"setPermissionsAddress\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/MetadataRegistry.sol\":\"MetadataRegistry\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts-upgradeable/access/AccessControlEnumerableUpgradeable.sol\":{\"keccak256\":\"0x7d24c901e098a04fa7f388c9ff1890bb522307272a2fee8030ee15a8d907096f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://581f4c4b9af18b5a8e811a0a45d38a125cad4627d67f7a605626ff3a2b26eb70\",\"dweb:/ipfs/QmWZwM8HEbPPjf5MaaRnELgW8JtDdWNu7oBXWCtLCERQyz\"]},\"@openzeppelin/contracts-upgradeable/access/AccessControlUpgradeable.sol\":{\"keccak256\":\"0xc8710577334e8d0799ae2b2a731b1924a7bddd64319da9787ddd2dc69bdd1ce5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b83b7afa4d2372da3ba5402fb10860a105c35d79812c60dc61007be2afc17618\",\"dweb:/ipfs/QmYX9xPmbNVSKXrepKiUZiG5oL3SdzFp9a4kqspxX1sEUx\"]},\"@openzeppelin/contracts-upgradeable/access/IAccessControlEnumerableUpgradeable.sol\":{\"keccak256\":\"0x7acbc538aad6eb4614e26612a8c5c0149bb8808db95e2638d245a8365f63e572\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ea07bdbf13b16d19ccf8a8f1a361c80bbfb6073e8b1d079b72f7a5f09dc642cd\",\"dweb:/ipfs/QmQh5YhCySYR5RSAEFTt3NaDhq6MCxvSTdFh56874JPxbY\"]},\"@openzeppelin/contracts-upgradeable/access/IAccessControlUpgradeable.sol\":{\"keccak256\":\"0xb8f5302f12138c5561362e88a78d061573e6298b7a1a5afe84a1e2c8d4d5aeaa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://740cf4dc535e3082560cf5a031473029f322690fc8037fe9d5e3a8bef42e757c\",\"dweb:/ipfs/QmTQxFdfxcaueQa23VX34wAPqzruZbkzyeN58tZK2yav2b\"]},\"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x89be10e757d242e9b18d5a32c9fbe2019f6d63052bbe46397a430a1d60d7f794\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f103ee2e4aecd37aac6ceefe670709cdd7613dee25fa2d4d9feaf7fc0aaa155e\",\"dweb:/ipfs/QmRiNZLoJk5k3HPMYGPGjZFd2ke1ZxjhJZkM45Ec9GH9hv\"]},\"@openzeppelin/contracts-upgradeable/token/ERC1155/ERC1155Upgradeable.sol\":{\"keccak256\":\"0xed79d68fc69539630aab88fc02b0be8ebfc97cbbda9a4ffabcf7551d7b04fc0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7881d76c688df27a39f5b1fcb6c197ebb0a1ecdb9c2efb4fb9690e4237f082f1\",\"dweb:/ipfs/QmXfQ1RJvixiBmQs16s2hUR4TbwksSk1Sy6bQrhU4QWEM5\"]},\"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155ReceiverUpgradeable.sol\":{\"keccak256\":\"0xffcb29612efb57efc8f0d4897deb5abaeac830022c59a3aa17446d698dbc856b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4a4da6e241d1d8c2ef214c311e02c749f45b5e0dd8168c667bc8ee6f67dcf4ce\",\"dweb:/ipfs/QmdsKj5frsNS7ZCfJBm4XNfy6MueV9udBF2FiBxVXwxybG\"]},\"@openzeppelin/contracts-upgradeable/token/ERC1155/IERC1155Upgradeable.sol\":{\"keccak256\":\"0xf51f292659a77777c0ed7375a39683d8bee53b86a6e7bd0c76f34ce7aa37a3a8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://32c68498e1b6013477d299e4881dcea818d7e4c3e3aba7a18bde3989b12dff83\",\"dweb:/ipfs/QmZzw1eHLQmDLfKbxVivEWUdae2BfTmjSg1aLowuLwScuZ\"]},\"@openzeppelin/contracts-upgradeable/token/ERC1155/extensions/IERC1155MetadataURIUpgradeable.sol\":{\"keccak256\":\"0xa350df12a8c10e821af05e0863f44e8317a0efa44df27bfd5dc1d63fdfa3c448\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1870980d15f9003916faf2a9a0eac6dcd4f0e28e2af6f5a3cee0cd685d460ee9\",\"dweb:/ipfs/QmY8K1YZQmuL2WDTPC8QwCm3ztrUD7JKmnvoZkMyGZceiM\"]},\"@openzeppelin/contracts-upgradeable/utils/AddressUpgradeable.sol\":{\"keccak256\":\"0x9c80f545915582e63fe206c6ce27cbe85a86fc10b9cd2a0e8c9488fb7c2ee422\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://310136ad60820af4177a11a61d77a3686faf5fca4942b600e08fc940db38396b\",\"dweb:/ipfs/QmbCzMNSTL7Zi7M4UCSqBrkHtp4jjxUnGbkneCZKdR1qeq\"]},\"@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0x75097e35253e7fb282ee4d7f27a80eaacfa759923185bf17302a89cbc059c5ef\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8b06267c5f80bad727af3e48b1382333d591dad51376399ef2f6b0ee6d58bf95\",\"dweb:/ipfs/QmdU5La1agcQvghnfMpWZGDPz2TUDTCxUwTLKmuMRXBpAx\"]},\"@openzeppelin/contracts-upgradeable/utils/CountersUpgradeable.sol\":{\"keccak256\":\"0x798741e231b22b81e2dd2eddaaf8832dee4baf5cd8e2dbaa5c1dd12a1c053c4d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c41e8a7a906b8f362c8b760a44edadc61782008ea2ecf377ac5b5325bf6c3912\",\"dweb:/ipfs/QmcXr19zuH3YLzD6RZNE6UTzvsKSckdxZQnagPoDGkCHu2\"]},\"@openzeppelin/contracts-upgradeable/utils/StringsUpgradeable.sol\":{\"keccak256\":\"0xb96dc79b65b7c37937919dcdb356a969ce0aa2e8338322bf4dc027a3c9c9a7eb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f8613145881436fc0480fff22da4868d611e2b0c0c3da083334eb4362ce1945a\",\"dweb:/ipfs/QmPqpP3YeRbBdTJRe6Gv2eGsUaANf4J6RwTNRW36iYahfV\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/ERC165Upgradeable.sol\":{\"keccak256\":\"0xd90d7723512df65ae417adaf0801042940f0dabd60039ceeaffe34aa5b238da1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1b13befeb3413749292f9fb229de1c7a509a5ce2c8047d9094fc004ca9d3af89\",\"dweb:/ipfs/QmRzJ2hZSwRtMejHUZAYTPRKgZsnfb112Fno9Jf3EiDfwA\"]},\"@openzeppelin/contracts-upgradeable/utils/introspection/IERC165Upgradeable.sol\":{\"keccak256\":\"0xc6cef87559d0aeffdf0a99803de655938a7779ec0a3cd5d4383483ad85565a09\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://92ad7e572cf44e6b4b37631b44b62f9eb9fb1cf14d9ce51c1504d5dc7ccaf758\",\"dweb:/ipfs/QmcnbqX85tsWnUXPmtuPLE4SczME2sJaTfmqEFkuAJvWhy\"]},\"@openzeppelin/contracts-upgradeable/utils/math/MathUpgradeable.sol\":{\"keccak256\":\"0x2bc0007987c229ae7624eb29be6a9b84f6a6a5872f76248b15208b131ea41c4e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2b2835c737d073ef8b82a4cc246495a9740f43e7ff2cf130906b2449ff9bfb91\",\"dweb:/ipfs/QmSCWfNoSvvTN57ic7o1RW6NqSxxGAqbBTnLKc7QHe27qB\"]},\"@openzeppelin/contracts-upgradeable/utils/math/SignedMathUpgradeable.sol\":{\"keccak256\":\"0x88f6b7bba3ee33eeb741f9a0f5bc98b6e6e352d0fe4905377bb328590f84095a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://88ace2d60f265752f18903d839910be4e4e104340b2957678585b812447825d4\",\"dweb:/ipfs/QmXFkNxMc3AAGzhs2wUEZyErWQjsvoTGyYjuU5oZkFki5Z\"]},\"@openzeppelin/contracts-upgradeable/utils/structs/EnumerableSetUpgradeable.sol\":{\"keccak256\":\"0x1c65595a26548a1b2263315b08a56334a2d7087319814437559c3c96025e939f\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://876afb75e0d5615b07f70a0bc69ae7f098df8ef058251b5934b9d05c9c7e0d1f\",\"dweb:/ipfs/Qmay4sdoBJQtP2cC1EDyQ8GzNPJZzo3v5soRRy8rDNLfBJ\"]},\"@verii/permissions-contract/contracts/Permissions.sol\":{\"keccak256\":\"0xfeb567393dc20917e657c98e7eab14b8b4bde172e097c9da99d9d504f406218b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1d2bb20d59a6ac1b5e56afcec46a9ae3bb2e77afd20cce0d21af2b1f92eb2416\",\"dweb:/ipfs/QmXT8TNUmSk912otnG9hme8df8ZPZBfY1nq9BWjFtfZKpY\"]},\"@verii/signature-verification-library/libraries/SignatureVerification.sol\":{\"keccak256\":\"0xd7dda8d7b594b5195947ed0f1b897dba63d154b8339ec0a89e6311502312ac15\",\"urls\":[\"bzz-raw://d319754f27ed4813441af4c62afe635a0d734209f6558a9a2c54faf2d95bebfa\",\"dweb:/ipfs/QmRSku9PgnJr8V3gjQM68D74K32ULZSjpU5fonBy5L1MA9\"]},\"@verii/verification-coupon-contract/contracts/VerificationCoupon.sol\":{\"keccak256\":\"0xbad01233ccb56a87e10ed025db456122f3f6dccf1a4be4eb64fa6980e5919960\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c52c3cab1de5ec62f3322e6f2c5928ef88523c0d159762e28fd5b8209c805da3\",\"dweb:/ipfs/QmP3wBTVVSriUSJ68jkYjtCgFMKDWB3JVAxEiDTvPowxDd\"]},\"project:/contracts/MetadataRegistry.sol\":{\"keccak256\":\"0x022937b331c574c8a30cab7a243d6c69a4d16ea4a6b51dbb42f71ba24a9ee5fe\",\"urls\":[\"bzz-raw://d25a65011628c4046023e5848fb9656ff29e9935e23fa124e41f831e16fd02ac\",\"dweb:/ipfs/QmeyNEuAWydZw4U2Z4o5Tvjizv7QdXhnJ4EqV5DKP5LWEW\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50613214806100206000396000f3fe608060405234801561001057600080fd5b50600436106101215760003560e01c8063891d245e116100ad578063a3b3cfbc11610071578063a3b3cfbc146102ab578063c50675d3146102d0578063c50a2def146102e3578063d3050f6e14610306578063fb5e3c251461031957600080fd5b8063891d245e146102095780638f6ece411461024557806392ecd653146102585780639448cc041461026b578063a2f41a5a1461029857600080fd5b8063465c4105116100f4578063465c4105146101aa57806353866d4f146101bd57806354c4992a146101d0578063579e2b5b146101e357806382681bfa146101f657600080fd5b80631aee318e146101265780631e1f5ea61461014f5780632f9a6d801461018257806340522a3d14610197575b600080fd5b6101396101343660046126d4565b61032c565b6040516101469190612d25565b60405180910390f35b61017261015d366004612878565b60016020526000908152604090205460ff1681565b6040519015158152602001610146565b61019561019036600461269a565b6103b9565b005b6101956101a53660046125af565b6104e1565b6101726101b8366004612a11565b6105c1565b6101956101cb3660046127ad565b61061a565b6101956101de366004612706565b610659565b6101956101f1366004612af1565b61066c565b6101956102043660046125ee565b61069e565b61017261021736600461266f565b6001600160a01b03919091166000908152600260208181526040808420948452939052919020015460ff1690565b610195610253366004612a7f565b610840565b610195610266366004612892565b61084f565b610172610279366004612878565b6001600160f01b03191660009081526001602052604090205460ff1690565b6101956102a636600461269a565b61085e565b6004546001600160a01b03165b6040516001600160a01b039091168152602001610146565b6101956102de36600461293f565b61098a565b6102f66102f136600461266f565b6109b2565b6040516101469493929190612ddd565b6102b861031436600461263b565b610a7a565b6101956103273660046125af565b610bbd565b6060600061033983610ccd565b905061034481611523565b6103b35760405162461bcd60e51b815260206004820152603560248201527f4f6e6c792066726565206372656164656e7469616c2074797065732069732061604482015274363637bbb2b2103bb4ba3437baba1031b7bab837b760591b60648201526084015b60405180910390fd5b92915050565b600060029054906101000a90046001600160a01b03166001600160a01b03166334ca4b646040518163ffffffff1660e01b815260040160206040518083038186803b15801561040757600080fd5b505afa15801561041b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043f91906125d2565b6001600160a01b0316336001600160a01b03161461046f5760405162461bcd60e51b81526004016103aa90612e30565b60005b81518110156104dd576001600083838151811061049f57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160f01b0319168252810191909152604001600020805460ff19169055806104d581612f94565b915050610472565b5050565b600060029054906101000a90046001600160a01b03166001600160a01b03166334ca4b646040518163ffffffff1660e01b815260040160206040518083038186803b15801561052f57600080fd5b505afa158015610543573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056791906125d2565b6001600160a01b0316336001600160a01b0316146105975760405162461bcd60e51b81526004016103aa90612e30565b600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6000816040516020016105d49190612b7c565b60405160208183030381529060405280519060200120836040516020016105fb9190612b7c565b6040516020818303038152906040528051906020012014905092915050565b6040805133602082015260009161064291015b604051602081830303815290604052836115a6565b9050610651868686868561162f565b505050505050565b610666848484843361162f565b50505050565b60408051336020820152600091610683910161062d565b9050610694888888888888876117c8565b5050505050505050565b600054610100900460ff16158080156106be5750600054600160ff909116105b806106d85750303b1580156106d8575060005460ff166001145b61073b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103aa565b6000805460ff19166001179055801561075e576000805461ff0019166101001790555b6000805462010000600160b01b031916620100006001600160a01b038616021781555b82518110156107f45760018060008584815181106107af57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160f01b0319168252810191909152604001600020805460ff1916911515919091179055806107ec81612f94565b915050610781565b50801561083b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610651868686868686336117c8565b6106518686868686863361196b565b600060029054906101000a90046001600160a01b03166001600160a01b03166334ca4b646040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ac57600080fd5b505afa1580156108c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e491906125d2565b6001600160a01b0316336001600160a01b0316146109145760405162461bcd60e51b81526004016103aa90612e30565b60005b81518110156104dd57600180600084848151811061094557634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160f01b0319168252810191909152604001600020805460ff19169115159190911790558061098281612f94565b915050610917565b604080513360208201526000916109a1910161062d565b90506106948888888888888761196b565b60026020908152600092835260408084209091529082529020805460018201805460f083811b9462010000909404901b9291906109ee90612f08565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1a90612f08565b8015610a675780601f10610a3c57610100808354040283529160200191610a67565b820191906000526020600020905b815481529060010190602001808311610a4a57829003601f168201915b5050506002909301549192505060ff1684565b600080610a8683611b6e565b600480546040516307db6d1b60e01b81529293506001600160a01b0316916307db6d1b91610ab8918891869101612d01565b60206040518083038186803b158015610ad057600080fd5b505afa925050508015610b00575060408051601f3d908101601f19168201909252610afd918101906125d2565b60015b610baa57610b0c612fd1565b806308c379a01415610b9e5750610b21612fe9565b80610b2c5750610ba0565b610b4e816040518060600160405280603b8152602001613119603b91396105c1565b8190610b6d5760405162461bcd60e51b81526004016103aa9190612e1d565b506000610b79836121a4565b90610b975760405162461bcd60e51b81526004016103aa9190612e1d565b5050610bb3565b505b3d6000803e3d6000fd5b91506103b39050565b5060009392505050565b6004546001600160a01b03161580610c5f57506004805460408051630d3292d960e21b815290516001600160a01b03909216926334ca4b64928282019260209290829003018186803b158015610c1257600080fd5b505afa158015610c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4a91906125d2565b6001600160a01b0316336001600160a01b0316145b610cab5760405162461bcd60e51b815260206004820152601e60248201527f5065726d697373696f6e733a2063616c6c6572206973206e6f7420564e46000060448201526064016103aa565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6060600082516001600160401b03811115610cf857634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610d5057816020015b6040805160a0810182526000808252602080830182905292820152606080820181905260808201528252600019909201910181610d165790505b50905060005b835181101561151c5760026000858381518110610d8357634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000206000858381518110610dd157634e487b7160e01b600052603260045260246000fd5b60209081029190910181015181015182528101919091526040016000206002015460ff16610e345760405162461bcd60e51b815260206004820152601060248201526f131a5cdd081a59081b9bdd081d5cd95960821b60448201526064016103aa565b60036000858381518110610e5857634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000206000858381518110610ea657634e487b7160e01b600052603260045260246000fd5b60200260200101516020015181526020019081526020016000206000858381518110610ee257634e487b7160e01b600052603260045260246000fd5b60209081029190910181015160409081015163ffffffff16835290820192909252016000206002015460ff16610f4b5760405162461bcd60e51b815260206004820152600e60248201526d125b99195e081b9bdd081d5cd95960921b60448201526064016103aa565b60026000858381518110610f6f57634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000206000858381518110610fbd57634e487b7160e01b600052603260045260246000fd5b602002602001015160200151815260200190815260200160002060000160009054906101000a900460f01b82828151811061100857634e487b7160e01b600052603260045260246000fd5b60209081029190910101516001600160f01b03199091169052835160039060009086908490811061104957634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516001600160a01b03166001600160a01b03168152602001908152602001600020600085838151811061109757634e487b7160e01b600052603260045260246000fd5b602002602001015160200151815260200190815260200160002060008583815181106110d357634e487b7160e01b600052603260045260246000fd5b60200260200101516040015163ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900460f01b82828151811061112a57634e487b7160e01b600052603260045260246000fd5b6020026020010151602001906001600160f01b03191690816001600160f01b031916815250506002600085838151811061117457634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002060008583815181106111c257634e487b7160e01b600052603260045260246000fd5b602002602001015160200151815260200190815260200160002060000160029054906101000a900460f01b82828151811061120d57634e487b7160e01b600052603260045260246000fd5b6020026020010151604001906001600160f01b03191690816001600160f01b031916815250506003600085838151811061125757634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002060008583815181106112a557634e487b7160e01b600052603260045260246000fd5b602002602001015160200151815260200190815260200160002060008583815181106112e157634e487b7160e01b600052603260045260246000fd5b60200260200101516040015163ffffffff1663ffffffff168152602001908152602001600020600101805461131590612f08565b80601f016020809104026020016040519081016040528092919081815260200182805461134190612f08565b801561138e5780601f106113635761010080835404028352916020019161138e565b820191906000526020600020905b81548152906001019060200180831161137157829003601f168201915b50505050508282815181106113b357634e487b7160e01b600052603260045260246000fd5b602002602001015160600181905250600260008583815181106113e657634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516001600160a01b03166001600160a01b03168152602001908152602001600020600085838151811061143457634e487b7160e01b600052603260045260246000fd5b6020026020010151602001518152602001908152602001600020600101805461145c90612f08565b80601f016020809104026020016040519081016040528092919081815260200182805461148890612f08565b80156114d55780601f106114aa576101008083540402835291602001916114d5565b820191906000526020600020905b8154815290600101906020018083116114b857829003601f168201915b50505050508282815181106114fa57634e487b7160e01b600052603260045260246000fd5b602002602001015160800181905250808061151490612f94565b915050610d56565b5092915050565b6000805b825181101561159d5761157e83828151811061155357634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516001600160f01b03191660009081526001602052604090205460ff1690565b61158b5750600092915050565b8061159581612f94565b915050611527565b50600192915050565b8151602083012060009060008060006115be866122d6565b60408051600081526020810180835289905260ff8316918101919091526060810184905260808101839052929550909350915060019060a0016020604051602081039080840390855afa158015611619573d6000803e3d6000fd5b5050604051601f19015198975050505050505050565b600061163a86610ccd565b905061164581611523565b156116925760405162461bcd60e51b815260206004820152601960248201527f4e6f2070616964206372656164656e7469616c2074797065730000000000000060448201526064016103aa565b600080546040516378a9bb4360e11b81526001600160a01b038581166004830152620100009092049091169063f15376869060240160206040518083038186803b1580156116df57600080fd5b505afa1580156116f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117179190612a67565b600054604051630428d69160e41b81529192506201000090046001600160a01b03169063428d6910906117569084908a908a908a908a90600401612e5f565b600060405180830381600087803b15801561177057600080fd5b505af1158015611784573d6000803e3d6000fd5b505050507fb9dd5ee1a79744a6d7df5d19e4f134f68f60763af7cb3b613f0e8c805d60f402826040516117b79190612d25565b60405180910390a150505050505050565b6004805460405163de1ac2fd60e01b81526001600160a01b03848116938201939093526000929091169063de1ac2fd9060240160206040518083038186803b15801561181357600080fd5b505afa158015611827573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184b91906125d2565b6001600160a01b03811660009081526002602081815260408084208d8552909152909120015490915060ff16156118bb5760405162461bcd60e51b8152602060048201526014602482015273131a5cdd081a5908185b1c9958591e481d5cd95960621b60448201526064016103aa565b6001600160a01b03811660009081526002602090815260408083208b84528252909120805460f08a811c620100000263ffffffff19909216908a901c171781558651909161191091600184019189019061234a565b5060028101805460ff191660011790556040517f788ba2e4c4d09e6aab92832a08b45f7c5fc06147609d13484ddd7f94b1b2c1a29061195890849089908d908a908a90612b98565b60405180910390a1505050505050505050565b60006119778289610a7a565b90506127108563ffffffff16106119c05760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b60448201526064016103aa565b6001600160a01b0381166000908152600360209081526040808320898452825280832063ffffffff8916845290915290206002015460ff1615611a3a5760405162461bcd60e51b8152602060048201526012602482015271125b99195e08185b1c9958591e481d5cd95960721b60448201526064016103aa565b6001600160a01b03811660009081526002602081815260408084208a8552909152909120015460ff16611aa75760405162461bcd60e51b81526020600482015260156024820152744c697374204964206e6f74206176656c6961626c6560581b60448201526064016103aa565b6001600160a01b0381166000908152600360209081526040808320898452825280832063ffffffff891684528252909120805461ffff191660f08b901c17815588519091611afc9160018401918b019061234a565b506002808201805460ff191660019081179091556001600160a01b0384166000908152602092835260408082208b835290935282902091517f5b3dbf2c1245cb7fe5833a37872aae67caba79bd65f30522e778fc48297376a5926119589286929101908b908e908c908c908c90612bf4565b604080518082018252601081526f63726564656e7469616c3a697373756560801b60208083019190915282518084018452601881527763726564656e7469616c3a6964656e74697479697373756560401b818301528351808501909452601784527663726564656e7469616c3a636f6e74616374697373756560481b9184019190915260609282610f0160f31b6001600160f01b031987161415611c16575091949350505050565b61107b60f21b6001600160f01b031987161415611c37575091949350505050565b61af2960f01b6001600160f01b031987161415611c58575091949350505050565b600960f21b6001600160f01b031987161415611c78575091949350505050565b61306160f21b6001600160f01b031987161415611c99575091949350505050565b6121a160f21b6001600160f01b031987161415611cba575091949350505050565b6105df60f41b6001600160f01b031987161415611cdb575091949350505050565b61ade960f01b6001600160f01b031987161415611cfc575091949350505050565b61104b60f11b6001600160f01b031987161415611d1d575091949350505050565b61b03760f01b6001600160f01b031987161415611d3e575091949350505050565b61c38560f01b6001600160f01b031987161415611d5f575091949350505050565b612f8760f11b6001600160f01b031987161415611d80575091949350505050565b609760f71b6001600160f01b031987161415611da0575091949350505050565b613cb760f21b6001600160f01b031987161415611dc1575091949350505050565b61955b60f01b6001600160f01b031987161415611de2575091949350505050565b613a8b60f11b6001600160f01b031987161415611e03575091949350505050565b61775160f11b6001600160f01b031987161415611e24575090949350505050565b61b89f60f01b6001600160f01b031987161415611e45575091949350505050565b6114a560f11b6001600160f01b031987161415611e66575091949350505050565b61432160f11b6001600160f01b031987161415611e87575091949350505050565b619b9f60f01b6001600160f01b031987161415611ea8575091949350505050565b612d5b60f11b6001600160f01b031987161415611ec9575091949350505050565b61b13960f01b6001600160f01b031987161415611eea575091949350505050565b61288560f21b6001600160f01b031987161415611f0b575091949350505050565b6125a760f21b6001600160f01b031987161415611f2b5750949350505050565b618f0760f01b6001600160f01b031987161415611f4b5750949350505050565b611d9360f21b6001600160f01b031987161415611f6c575091949350505050565b6136d360f21b6001600160f01b031987161415611f8d575091949350505050565b617e1560f01b6001600160f01b031987161415611fae575091949350505050565b617a5560f11b6001600160f01b031987161415611fcf575091949350505050565b61851f60f01b6001600160f01b031987161415611ff0575090949350505050565b61feab60f01b6001600160f01b031987161415612011575090949350505050565b6177e560f11b6001600160f01b031987161415612032575091949350505050565b616c5760f11b6001600160f01b031987161415612053575091949350505050565b61deef60f01b6001600160f01b031987161415612074575090949350505050565b61149b60f11b6001600160f01b031987161415612095575091949350505050565b6186bf60f01b6001600160f01b0319871614156120b6575091949350505050565b612d8760f11b6001600160f01b0319871614156120d7575091949350505050565b617b1760f01b6001600160f01b0319871614156120f8575090949350505050565b6114e960f11b6001600160f01b031987161415612119575091949350505050565b6118f760f21b6001600160f01b0319871614156121395750949350505050565b614ffb60f01b6001600160f01b0319871614156121595750949350505050565b61782960f11b6001600160f01b03198716141561217a575091949350505050565b61280160f21b6001600160f01b03198716141561219b575090949350505050565b95945050505050565b60606121d8826040518060400160405280601081526020016f63726564656e7469616c3a697373756560801b8152506105c1565b156121fc576040518060800160405280604281526020016131546042913992915050565b612236826040518060400160405280601881526020017763726564656e7469616c3a6964656e74697479697373756560401b8152506105c1565b1561225a576040518060800160405280604a81526020016130cf604a913992915050565b612293826040518060400160405280601781526020017663726564656e7469616c3a636f6e74616374697373756560481b8152506105c1565b156122b7576040518060800160405280604981526020016131966049913992915050565b60405180608001604052806044815260200161308b6044913992915050565b6000806000835160411461232c5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e677468000000000000000060448201526064016103aa565b50505060208101516040820151606090920151909260009190911a90565b82805461235690612f08565b90600052602060002090601f01602090048101928261237857600085556123be565b82601f1061239157805160ff19168380011785556123be565b828001600101855582156123be579182015b828111156123be5782518255916020019190600101906123a3565b506123ca9291506123ce565b5090565b5b808211156123ca57600081556001016123cf565b600082601f8301126123f3578081fd5b8135602061240082612eb9565b60405161240d8282612f68565b8381528281019150858301600585901b8701840188101561242c578586fd5b855b858110156124515761243f82612510565b8452928401929084019060010161242e565b5090979650505050505050565b600082601f83011261246e578081fd5b8135602061247b82612eb9565b604080516124898382612f68565b84815283810192508684016060808702890186018a10156124a8578788fd5b875b878110156125015781838c0312156124c0578889fd5b84516124cb81612f43565b83356124d681613072565b815283880135888201526124eb86850161259b565b81870152865294860194918101916001016124aa565b50919998505050505050505050565b80356001600160f01b03198116811461252857600080fd5b919050565b600082601f83011261253d578081fd5b81356001600160401b0381111561255657612556612fbb565b60405161256d601f8301601f191660200182612f68565b818152846020838601011115612581578283fd5b816020850160208301379081016020019190915292915050565b803563ffffffff8116811461252857600080fd5b6000602082840312156125c0578081fd5b81356125cb81613072565b9392505050565b6000602082840312156125e3578081fd5b81516125cb81613072565b60008060408385031215612600578081fd5b823561260b81613072565b915060208301356001600160401b03811115612625578182fd5b612631858286016123e3565b9150509250929050565b6000806040838503121561264d578182fd5b823561265881613072565b915061266660208401612510565b90509250929050565b60008060408385031215612681578182fd5b823561268c81613072565b946020939093013593505050565b6000602082840312156126ab578081fd5b81356001600160401b038111156126c0578182fd5b6126cc848285016123e3565b949350505050565b6000602082840312156126e5578081fd5b81356001600160401b038111156126fa578182fd5b6126cc8482850161245e565b6000806000806080858703121561271b578182fd5b84356001600160401b0380821115612731578384fd5b61273d8883890161245e565b95506020870135915080821115612752578384fd5b61275e8883890161252d565b94506040870135915080821115612773578384fd5b61277f8883890161252d565b93506060870135915080821115612794578283fd5b506127a18782880161252d565b91505092959194509250565b600080600080600060a086880312156127c4578283fd5b85356001600160401b03808211156127da578485fd5b6127e689838a0161245e565b965060208801359150808211156127fb578485fd5b61280789838a0161252d565b9550604088013591508082111561281c578485fd5b61282889838a0161252d565b9450606088013591508082111561283d578283fd5b61284989838a0161252d565b9350608088013591508082111561285e578283fd5b5061286b8882890161252d565b9150509295509295909350565b600060208284031215612889578081fd5b6125cb82612510565b60008060008060008060c087890312156128aa578384fd5b6128b387612510565b955060208701356001600160401b03808211156128ce578586fd5b6128da8a838b0161252d565b9650604089013595506128ef60608a0161259b565b94506080890135915080821115612904578283fd5b6129108a838b0161252d565b935060a0890135915080821115612925578283fd5b5061293289828a0161252d565b9150509295509295509295565b600080600080600080600060e0888a031215612959578485fd5b61296288612510565b965060208801356001600160401b038082111561297d578687fd5b6129898b838c0161252d565b975060408a0135965061299e60608b0161259b565b955060808a01359150808211156129b3578283fd5b6129bf8b838c0161252d565b945060a08a01359150808211156129d4578283fd5b6129e08b838c0161252d565b935060c08a01359150808211156129f5578283fd5b50612a028a828b0161252d565b91505092959891949750929550565b60008060408385031215612a23578182fd5b82356001600160401b0380821115612a39578384fd5b612a458683870161252d565b93506020850135915080821115612a5a578283fd5b506126318582860161252d565b600060208284031215612a78578081fd5b5051919050565b60008060008060008060c08789031215612a97578384fd5b86359550612aa760208801612510565b9450612ab560408801612510565b935060608701356001600160401b0380821115612ad0578384fd5b612adc8a838b0161252d565b94506080890135915080821115612904578384fd5b600080600080600080600060e0888a031215612b0b578081fd5b87359650612b1b60208901612510565b9550612b2960408901612510565b945060608801356001600160401b0380821115612b44578283fd5b61299e8b838c0161252d565b60008151808452612b68816020860160208601612edc565b601f01601f19169290920160200192915050565b60008251612b8e818460208701612edc565b9190910192915050565b6001600160a01b038616815260a060208201819052600090612bbc90830187612b50565b8560408401528281036060840152612bd48186612b50565b90508281036080840152612be88185612b50565b98975050505050505050565b6001600160a01b038816815260e0602082015286546000908190600181811c9082811680612c2357607f831692505b60208310811415612c4257634e487b7160e01b86526022600452602486fd5b60e087018390526101008701818015612c625760018114612c7457612c9f565b60ff1986168252602082019650612c9f565b60008f815260209020885b86811015612c995781548482015290850190602001612c7f565b83019750505b505050505050876040840152612cc160608401886001600160f01b0319169052565b63ffffffff8616608084015282810360a0840152612cdf8186612b50565b905082810360c0840152612cf38185612b50565b9a9950505050505050505050565b6001600160a01b03831681526040602082018190526000906126cc90830184612b50565b60006020808301818452808551808352604092508286019150828160051b870101848801865b83811015612dcf57888303603f19018552815180516001600160f01b031990811685528882015181168986015287820151168785015260608082015160a08287018190529190612d9d83880182612b50565b9250505060808083015192508582038187015250612dbb8183612b50565b968901969450505090860190600101612d4b565b509098975050505050505050565b6001600160f01b0319858116825284166020820152608060408201819052600090612e0a90830185612b50565b9050821515606083015295945050505050565b6020815260006125cb6020830184612b50565b6020808252601590820152742a34329031b0b63632b91034b9903737ba102b272360591b604082015260600190565b85815260a060208201526000612e7860a0830187612b50565b8281036040840152612e8a8187612b50565b90508281036060840152612e9e8186612b50565b91505060018060a01b03831660808301529695505050505050565b60006001600160401b03821115612ed257612ed2612fbb565b5060051b60200190565b60005b83811015612ef7578181015183820152602001612edf565b838111156106665750506000910152565b600181811c90821680612f1c57607f821691505b60208210811415612f3d57634e487b7160e01b600052602260045260246000fd5b50919050565b606081018181106001600160401b0382111715612f6257612f62612fbb565b60405250565b601f8201601f191681016001600160401b0381118282101715612f8d57612f8d612fbb565b6040525050565b6000600019821415612fb457634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fd5b600060033d1115612fe657600481823e5160e01c5b90565b600060443d1015612ff75790565b6040516003193d81016004833e81513d6001600160401b03816024840111818411171561302657505050505090565b828501915081518181111561303e5750505050505090565b843d87010160208285010111156130585750505050505090565b61306760208286010187612f68565b509095945050505050565b6001600160a01b038116811461308757600080fd5b5056fe5065726d697373696f6e733a207072696d617279206f66206f70657261746f72206c61636b73207065726d697373696f6e20666f722063726564656e7469616c547970655065726d697373696f6e733a207072696d617279206f66206f70657261746f72206c61636b732063726564656e7469616c3a6964656e746974796973737565207065726d697373696f6e5065726d697373696f6e733a207072696d617279206f66206f70657261746f72206c61636b7320726571756573746564207065726d697373696f6e5065726d697373696f6e733a207072696d617279206f66206f70657261746f72206c61636b732063726564656e7469616c3a6973737565207065726d697373696f6e5065726d697373696f6e733a207072696d617279206f66206f70657261746f72206c61636b732063726564656e7469616c3a636f6e746163746973737565207065726d697373696f6ea2646970667358221220b4a25a77a0b56e2c5ef18602ac58cd6dae528264b6cd40c8c98ff462d5f3a38164736f6c63430008040033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101215760003560e01c8063891d245e116100ad578063a3b3cfbc11610071578063a3b3cfbc146102ab578063c50675d3146102d0578063c50a2def146102e3578063d3050f6e14610306578063fb5e3c251461031957600080fd5b8063891d245e146102095780638f6ece411461024557806392ecd653146102585780639448cc041461026b578063a2f41a5a1461029857600080fd5b8063465c4105116100f4578063465c4105146101aa57806353866d4f146101bd57806354c4992a146101d0578063579e2b5b146101e357806382681bfa146101f657600080fd5b80631aee318e146101265780631e1f5ea61461014f5780632f9a6d801461018257806340522a3d14610197575b600080fd5b6101396101343660046126d4565b61032c565b6040516101469190612d25565b60405180910390f35b61017261015d366004612878565b60016020526000908152604090205460ff1681565b6040519015158152602001610146565b61019561019036600461269a565b6103b9565b005b6101956101a53660046125af565b6104e1565b6101726101b8366004612a11565b6105c1565b6101956101cb3660046127ad565b61061a565b6101956101de366004612706565b610659565b6101956101f1366004612af1565b61066c565b6101956102043660046125ee565b61069e565b61017261021736600461266f565b6001600160a01b03919091166000908152600260208181526040808420948452939052919020015460ff1690565b610195610253366004612a7f565b610840565b610195610266366004612892565b61084f565b610172610279366004612878565b6001600160f01b03191660009081526001602052604090205460ff1690565b6101956102a636600461269a565b61085e565b6004546001600160a01b03165b6040516001600160a01b039091168152602001610146565b6101956102de36600461293f565b61098a565b6102f66102f136600461266f565b6109b2565b6040516101469493929190612ddd565b6102b861031436600461263b565b610a7a565b6101956103273660046125af565b610bbd565b6060600061033983610ccd565b905061034481611523565b6103b35760405162461bcd60e51b815260206004820152603560248201527f4f6e6c792066726565206372656164656e7469616c2074797065732069732061604482015274363637bbb2b2103bb4ba3437baba1031b7bab837b760591b60648201526084015b60405180910390fd5b92915050565b600060029054906101000a90046001600160a01b03166001600160a01b03166334ca4b646040518163ffffffff1660e01b815260040160206040518083038186803b15801561040757600080fd5b505afa15801561041b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061043f91906125d2565b6001600160a01b0316336001600160a01b03161461046f5760405162461bcd60e51b81526004016103aa90612e30565b60005b81518110156104dd576001600083838151811061049f57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160f01b0319168252810191909152604001600020805460ff19169055806104d581612f94565b915050610472565b5050565b600060029054906101000a90046001600160a01b03166001600160a01b03166334ca4b646040518163ffffffff1660e01b815260040160206040518083038186803b15801561052f57600080fd5b505afa158015610543573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061056791906125d2565b6001600160a01b0316336001600160a01b0316146105975760405162461bcd60e51b81526004016103aa90612e30565b600080546001600160a01b03909216620100000262010000600160b01b0319909216919091179055565b6000816040516020016105d49190612b7c565b60405160208183030381529060405280519060200120836040516020016105fb9190612b7c565b6040516020818303038152906040528051906020012014905092915050565b6040805133602082015260009161064291015b604051602081830303815290604052836115a6565b9050610651868686868561162f565b505050505050565b610666848484843361162f565b50505050565b60408051336020820152600091610683910161062d565b9050610694888888888888876117c8565b5050505050505050565b600054610100900460ff16158080156106be5750600054600160ff909116105b806106d85750303b1580156106d8575060005460ff166001145b61073b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016103aa565b6000805460ff19166001179055801561075e576000805461ff0019166101001790555b6000805462010000600160b01b031916620100006001600160a01b038616021781555b82518110156107f45760018060008584815181106107af57634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160f01b0319168252810191909152604001600020805460ff1916911515919091179055806107ec81612f94565b915050610781565b50801561083b576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b610651868686868686336117c8565b6106518686868686863361196b565b600060029054906101000a90046001600160a01b03166001600160a01b03166334ca4b646040518163ffffffff1660e01b815260040160206040518083038186803b1580156108ac57600080fd5b505afa1580156108c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108e491906125d2565b6001600160a01b0316336001600160a01b0316146109145760405162461bcd60e51b81526004016103aa90612e30565b60005b81518110156104dd57600180600084848151811061094557634e487b7160e01b600052603260045260246000fd5b6020908102919091018101516001600160f01b0319168252810191909152604001600020805460ff19169115159190911790558061098281612f94565b915050610917565b604080513360208201526000916109a1910161062d565b90506106948888888888888761196b565b60026020908152600092835260408084209091529082529020805460018201805460f083811b9462010000909404901b9291906109ee90612f08565b80601f0160208091040260200160405190810160405280929190818152602001828054610a1a90612f08565b8015610a675780601f10610a3c57610100808354040283529160200191610a67565b820191906000526020600020905b815481529060010190602001808311610a4a57829003601f168201915b5050506002909301549192505060ff1684565b600080610a8683611b6e565b600480546040516307db6d1b60e01b81529293506001600160a01b0316916307db6d1b91610ab8918891869101612d01565b60206040518083038186803b158015610ad057600080fd5b505afa925050508015610b00575060408051601f3d908101601f19168201909252610afd918101906125d2565b60015b610baa57610b0c612fd1565b806308c379a01415610b9e5750610b21612fe9565b80610b2c5750610ba0565b610b4e816040518060600160405280603b8152602001613119603b91396105c1565b8190610b6d5760405162461bcd60e51b81526004016103aa9190612e1d565b506000610b79836121a4565b90610b975760405162461bcd60e51b81526004016103aa9190612e1d565b5050610bb3565b505b3d6000803e3d6000fd5b91506103b39050565b5060009392505050565b6004546001600160a01b03161580610c5f57506004805460408051630d3292d960e21b815290516001600160a01b03909216926334ca4b64928282019260209290829003018186803b158015610c1257600080fd5b505afa158015610c26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c4a91906125d2565b6001600160a01b0316336001600160a01b0316145b610cab5760405162461bcd60e51b815260206004820152601e60248201527f5065726d697373696f6e733a2063616c6c6572206973206e6f7420564e46000060448201526064016103aa565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6060600082516001600160401b03811115610cf857634e487b7160e01b600052604160045260246000fd5b604051908082528060200260200182016040528015610d5057816020015b6040805160a0810182526000808252602080830182905292820152606080820181905260808201528252600019909201910181610d165790505b50905060005b835181101561151c5760026000858381518110610d8357634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000206000858381518110610dd157634e487b7160e01b600052603260045260246000fd5b60209081029190910181015181015182528101919091526040016000206002015460ff16610e345760405162461bcd60e51b815260206004820152601060248201526f131a5cdd081a59081b9bdd081d5cd95960821b60448201526064016103aa565b60036000858381518110610e5857634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000206000858381518110610ea657634e487b7160e01b600052603260045260246000fd5b60200260200101516020015181526020019081526020016000206000858381518110610ee257634e487b7160e01b600052603260045260246000fd5b60209081029190910181015160409081015163ffffffff16835290820192909252016000206002015460ff16610f4b5760405162461bcd60e51b815260206004820152600e60248201526d125b99195e081b9bdd081d5cd95960921b60448201526064016103aa565b60026000858381518110610f6f57634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516001600160a01b03166001600160a01b031681526020019081526020016000206000858381518110610fbd57634e487b7160e01b600052603260045260246000fd5b602002602001015160200151815260200190815260200160002060000160009054906101000a900460f01b82828151811061100857634e487b7160e01b600052603260045260246000fd5b60209081029190910101516001600160f01b03199091169052835160039060009086908490811061104957634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516001600160a01b03166001600160a01b03168152602001908152602001600020600085838151811061109757634e487b7160e01b600052603260045260246000fd5b602002602001015160200151815260200190815260200160002060008583815181106110d357634e487b7160e01b600052603260045260246000fd5b60200260200101516040015163ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900460f01b82828151811061112a57634e487b7160e01b600052603260045260246000fd5b6020026020010151602001906001600160f01b03191690816001600160f01b031916815250506002600085838151811061117457634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002060008583815181106111c257634e487b7160e01b600052603260045260246000fd5b602002602001015160200151815260200190815260200160002060000160029054906101000a900460f01b82828151811061120d57634e487b7160e01b600052603260045260246000fd5b6020026020010151604001906001600160f01b03191690816001600160f01b031916815250506003600085838151811061125757634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516001600160a01b03166001600160a01b0316815260200190815260200160002060008583815181106112a557634e487b7160e01b600052603260045260246000fd5b602002602001015160200151815260200190815260200160002060008583815181106112e157634e487b7160e01b600052603260045260246000fd5b60200260200101516040015163ffffffff1663ffffffff168152602001908152602001600020600101805461131590612f08565b80601f016020809104026020016040519081016040528092919081815260200182805461134190612f08565b801561138e5780601f106113635761010080835404028352916020019161138e565b820191906000526020600020905b81548152906001019060200180831161137157829003601f168201915b50505050508282815181106113b357634e487b7160e01b600052603260045260246000fd5b602002602001015160600181905250600260008583815181106113e657634e487b7160e01b600052603260045260246000fd5b6020026020010151600001516001600160a01b03166001600160a01b03168152602001908152602001600020600085838151811061143457634e487b7160e01b600052603260045260246000fd5b6020026020010151602001518152602001908152602001600020600101805461145c90612f08565b80601f016020809104026020016040519081016040528092919081815260200182805461148890612f08565b80156114d55780601f106114aa576101008083540402835291602001916114d5565b820191906000526020600020905b8154815290600101906020018083116114b857829003601f168201915b50505050508282815181106114fa57634e487b7160e01b600052603260045260246000fd5b602002602001015160800181905250808061151490612f94565b915050610d56565b5092915050565b6000805b825181101561159d5761157e83828151811061155357634e487b7160e01b600052603260045260246000fd5b6020026020010151602001516001600160f01b03191660009081526001602052604090205460ff1690565b61158b5750600092915050565b8061159581612f94565b915050611527565b50600192915050565b8151602083012060009060008060006115be866122d6565b60408051600081526020810180835289905260ff8316918101919091526060810184905260808101839052929550909350915060019060a0016020604051602081039080840390855afa158015611619573d6000803e3d6000fd5b5050604051601f19015198975050505050505050565b600061163a86610ccd565b905061164581611523565b156116925760405162461bcd60e51b815260206004820152601960248201527f4e6f2070616964206372656164656e7469616c2074797065730000000000000060448201526064016103aa565b600080546040516378a9bb4360e11b81526001600160a01b038581166004830152620100009092049091169063f15376869060240160206040518083038186803b1580156116df57600080fd5b505afa1580156116f3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117179190612a67565b600054604051630428d69160e41b81529192506201000090046001600160a01b03169063428d6910906117569084908a908a908a908a90600401612e5f565b600060405180830381600087803b15801561177057600080fd5b505af1158015611784573d6000803e3d6000fd5b505050507fb9dd5ee1a79744a6d7df5d19e4f134f68f60763af7cb3b613f0e8c805d60f402826040516117b79190612d25565b60405180910390a150505050505050565b6004805460405163de1ac2fd60e01b81526001600160a01b03848116938201939093526000929091169063de1ac2fd9060240160206040518083038186803b15801561181357600080fd5b505afa158015611827573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061184b91906125d2565b6001600160a01b03811660009081526002602081815260408084208d8552909152909120015490915060ff16156118bb5760405162461bcd60e51b8152602060048201526014602482015273131a5cdd081a5908185b1c9958591e481d5cd95960621b60448201526064016103aa565b6001600160a01b03811660009081526002602090815260408083208b84528252909120805460f08a811c620100000263ffffffff19909216908a901c171781558651909161191091600184019189019061234a565b5060028101805460ff191660011790556040517f788ba2e4c4d09e6aab92832a08b45f7c5fc06147609d13484ddd7f94b1b2c1a29061195890849089908d908a908a90612b98565b60405180910390a1505050505050505050565b60006119778289610a7a565b90506127108563ffffffff16106119c05760405162461bcd60e51b815260206004820152600d60248201526c092dcecc2d8d2c840d2dcc8caf609b1b60448201526064016103aa565b6001600160a01b0381166000908152600360209081526040808320898452825280832063ffffffff8916845290915290206002015460ff1615611a3a5760405162461bcd60e51b8152602060048201526012602482015271125b99195e08185b1c9958591e481d5cd95960721b60448201526064016103aa565b6001600160a01b03811660009081526002602081815260408084208a8552909152909120015460ff16611aa75760405162461bcd60e51b81526020600482015260156024820152744c697374204964206e6f74206176656c6961626c6560581b60448201526064016103aa565b6001600160a01b0381166000908152600360209081526040808320898452825280832063ffffffff891684528252909120805461ffff191660f08b901c17815588519091611afc9160018401918b019061234a565b506002808201805460ff191660019081179091556001600160a01b0384166000908152602092835260408082208b835290935282902091517f5b3dbf2c1245cb7fe5833a37872aae67caba79bd65f30522e778fc48297376a5926119589286929101908b908e908c908c908c90612bf4565b604080518082018252601081526f63726564656e7469616c3a697373756560801b60208083019190915282518084018452601881527763726564656e7469616c3a6964656e74697479697373756560401b818301528351808501909452601784527663726564656e7469616c3a636f6e74616374697373756560481b9184019190915260609282610f0160f31b6001600160f01b031987161415611c16575091949350505050565b61107b60f21b6001600160f01b031987161415611c37575091949350505050565b61af2960f01b6001600160f01b031987161415611c58575091949350505050565b600960f21b6001600160f01b031987161415611c78575091949350505050565b61306160f21b6001600160f01b031987161415611c99575091949350505050565b6121a160f21b6001600160f01b031987161415611cba575091949350505050565b6105df60f41b6001600160f01b031987161415611cdb575091949350505050565b61ade960f01b6001600160f01b031987161415611cfc575091949350505050565b61104b60f11b6001600160f01b031987161415611d1d575091949350505050565b61b03760f01b6001600160f01b031987161415611d3e575091949350505050565b61c38560f01b6001600160f01b031987161415611d5f575091949350505050565b612f8760f11b6001600160f01b031987161415611d80575091949350505050565b609760f71b6001600160f01b031987161415611da0575091949350505050565b613cb760f21b6001600160f01b031987161415611dc1575091949350505050565b61955b60f01b6001600160f01b031987161415611de2575091949350505050565b613a8b60f11b6001600160f01b031987161415611e03575091949350505050565b61775160f11b6001600160f01b031987161415611e24575090949350505050565b61b89f60f01b6001600160f01b031987161415611e45575091949350505050565b6114a560f11b6001600160f01b031987161415611e66575091949350505050565b61432160f11b6001600160f01b031987161415611e87575091949350505050565b619b9f60f01b6001600160f01b031987161415611ea8575091949350505050565b612d5b60f11b6001600160f01b031987161415611ec9575091949350505050565b61b13960f01b6001600160f01b031987161415611eea575091949350505050565b61288560f21b6001600160f01b031987161415611f0b575091949350505050565b6125a760f21b6001600160f01b031987161415611f2b5750949350505050565b618f0760f01b6001600160f01b031987161415611f4b5750949350505050565b611d9360f21b6001600160f01b031987161415611f6c575091949350505050565b6136d360f21b6001600160f01b031987161415611f8d575091949350505050565b617e1560f01b6001600160f01b031987161415611fae575091949350505050565b617a5560f11b6001600160f01b031987161415611fcf575091949350505050565b61851f60f01b6001600160f01b031987161415611ff0575090949350505050565b61feab60f01b6001600160f01b031987161415612011575090949350505050565b6177e560f11b6001600160f01b031987161415612032575091949350505050565b616c5760f11b6001600160f01b031987161415612053575091949350505050565b61deef60f01b6001600160f01b031987161415612074575090949350505050565b61149b60f11b6001600160f01b031987161415612095575091949350505050565b6186bf60f01b6001600160f01b0319871614156120b6575091949350505050565b612d8760f11b6001600160f01b0319871614156120d7575091949350505050565b617b1760f01b6001600160f01b0319871614156120f8575090949350505050565b6114e960f11b6001600160f01b031987161415612119575091949350505050565b6118f760f21b6001600160f01b0319871614156121395750949350505050565b614ffb60f01b6001600160f01b0319871614156121595750949350505050565b61782960f11b6001600160f01b03198716141561217a575091949350505050565b61280160f21b6001600160f01b03198716141561219b575090949350505050565b95945050505050565b60606121d8826040518060400160405280601081526020016f63726564656e7469616c3a697373756560801b8152506105c1565b156121fc576040518060800160405280604281526020016131546042913992915050565b612236826040518060400160405280601881526020017763726564656e7469616c3a6964656e74697479697373756560401b8152506105c1565b1561225a576040518060800160405280604a81526020016130cf604a913992915050565b612293826040518060400160405280601781526020017663726564656e7469616c3a636f6e74616374697373756560481b8152506105c1565b156122b7576040518060800160405280604981526020016131966049913992915050565b60405180608001604052806044815260200161308b6044913992915050565b6000806000835160411461232c5760405162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e677468000000000000000060448201526064016103aa565b50505060208101516040820151606090920151909260009190911a90565b82805461235690612f08565b90600052602060002090601f01602090048101928261237857600085556123be565b82601f1061239157805160ff19168380011785556123be565b828001600101855582156123be579182015b828111156123be5782518255916020019190600101906123a3565b506123ca9291506123ce565b5090565b5b808211156123ca57600081556001016123cf565b600082601f8301126123f3578081fd5b8135602061240082612eb9565b60405161240d8282612f68565b8381528281019150858301600585901b8701840188101561242c578586fd5b855b858110156124515761243f82612510565b8452928401929084019060010161242e565b5090979650505050505050565b600082601f83011261246e578081fd5b8135602061247b82612eb9565b604080516124898382612f68565b84815283810192508684016060808702890186018a10156124a8578788fd5b875b878110156125015781838c0312156124c0578889fd5b84516124cb81612f43565b83356124d681613072565b815283880135888201526124eb86850161259b565b81870152865294860194918101916001016124aa565b50919998505050505050505050565b80356001600160f01b03198116811461252857600080fd5b919050565b600082601f83011261253d578081fd5b81356001600160401b0381111561255657612556612fbb565b60405161256d601f8301601f191660200182612f68565b818152846020838601011115612581578283fd5b816020850160208301379081016020019190915292915050565b803563ffffffff8116811461252857600080fd5b6000602082840312156125c0578081fd5b81356125cb81613072565b9392505050565b6000602082840312156125e3578081fd5b81516125cb81613072565b60008060408385031215612600578081fd5b823561260b81613072565b915060208301356001600160401b03811115612625578182fd5b612631858286016123e3565b9150509250929050565b6000806040838503121561264d578182fd5b823561265881613072565b915061266660208401612510565b90509250929050565b60008060408385031215612681578182fd5b823561268c81613072565b946020939093013593505050565b6000602082840312156126ab578081fd5b81356001600160401b038111156126c0578182fd5b6126cc848285016123e3565b949350505050565b6000602082840312156126e5578081fd5b81356001600160401b038111156126fa578182fd5b6126cc8482850161245e565b6000806000806080858703121561271b578182fd5b84356001600160401b0380821115612731578384fd5b61273d8883890161245e565b95506020870135915080821115612752578384fd5b61275e8883890161252d565b94506040870135915080821115612773578384fd5b61277f8883890161252d565b93506060870135915080821115612794578283fd5b506127a18782880161252d565b91505092959194509250565b600080600080600060a086880312156127c4578283fd5b85356001600160401b03808211156127da578485fd5b6127e689838a0161245e565b965060208801359150808211156127fb578485fd5b61280789838a0161252d565b9550604088013591508082111561281c578485fd5b61282889838a0161252d565b9450606088013591508082111561283d578283fd5b61284989838a0161252d565b9350608088013591508082111561285e578283fd5b5061286b8882890161252d565b9150509295509295909350565b600060208284031215612889578081fd5b6125cb82612510565b60008060008060008060c087890312156128aa578384fd5b6128b387612510565b955060208701356001600160401b03808211156128ce578586fd5b6128da8a838b0161252d565b9650604089013595506128ef60608a0161259b565b94506080890135915080821115612904578283fd5b6129108a838b0161252d565b935060a0890135915080821115612925578283fd5b5061293289828a0161252d565b9150509295509295509295565b600080600080600080600060e0888a031215612959578485fd5b61296288612510565b965060208801356001600160401b038082111561297d578687fd5b6129898b838c0161252d565b975060408a0135965061299e60608b0161259b565b955060808a01359150808211156129b3578283fd5b6129bf8b838c0161252d565b945060a08a01359150808211156129d4578283fd5b6129e08b838c0161252d565b935060c08a01359150808211156129f5578283fd5b50612a028a828b0161252d565b91505092959891949750929550565b60008060408385031215612a23578182fd5b82356001600160401b0380821115612a39578384fd5b612a458683870161252d565b93506020850135915080821115612a5a578283fd5b506126318582860161252d565b600060208284031215612a78578081fd5b5051919050565b60008060008060008060c08789031215612a97578384fd5b86359550612aa760208801612510565b9450612ab560408801612510565b935060608701356001600160401b0380821115612ad0578384fd5b612adc8a838b0161252d565b94506080890135915080821115612904578384fd5b600080600080600080600060e0888a031215612b0b578081fd5b87359650612b1b60208901612510565b9550612b2960408901612510565b945060608801356001600160401b0380821115612b44578283fd5b61299e8b838c0161252d565b60008151808452612b68816020860160208601612edc565b601f01601f19169290920160200192915050565b60008251612b8e818460208701612edc565b9190910192915050565b6001600160a01b038616815260a060208201819052600090612bbc90830187612b50565b8560408401528281036060840152612bd48186612b50565b90508281036080840152612be88185612b50565b98975050505050505050565b6001600160a01b038816815260e0602082015286546000908190600181811c9082811680612c2357607f831692505b60208310811415612c4257634e487b7160e01b86526022600452602486fd5b60e087018390526101008701818015612c625760018114612c7457612c9f565b60ff1986168252602082019650612c9f565b60008f815260209020885b86811015612c995781548482015290850190602001612c7f565b83019750505b505050505050876040840152612cc160608401886001600160f01b0319169052565b63ffffffff8616608084015282810360a0840152612cdf8186612b50565b905082810360c0840152612cf38185612b50565b9a9950505050505050505050565b6001600160a01b03831681526040602082018190526000906126cc90830184612b50565b60006020808301818452808551808352604092508286019150828160051b870101848801865b83811015612dcf57888303603f19018552815180516001600160f01b031990811685528882015181168986015287820151168785015260608082015160a08287018190529190612d9d83880182612b50565b9250505060808083015192508582038187015250612dbb8183612b50565b968901969450505090860190600101612d4b565b509098975050505050505050565b6001600160f01b0319858116825284166020820152608060408201819052600090612e0a90830185612b50565b9050821515606083015295945050505050565b6020815260006125cb6020830184612b50565b6020808252601590820152742a34329031b0b63632b91034b9903737ba102b272360591b604082015260600190565b85815260a060208201526000612e7860a0830187612b50565b8281036040840152612e8a8187612b50565b90508281036060840152612e9e8186612b50565b91505060018060a01b03831660808301529695505050505050565b60006001600160401b03821115612ed257612ed2612fbb565b5060051b60200190565b60005b83811015612ef7578181015183820152602001612edf565b838111156106665750506000910152565b600181811c90821680612f1c57607f821691505b60208210811415612f3d57634e487b7160e01b600052602260045260246000fd5b50919050565b606081018181106001600160401b0382111715612f6257612f62612fbb565b60405250565b601f8201601f191681016001600160401b0381118282101715612f8d57612f8d612fbb565b6040525050565b6000600019821415612fb457634e487b7160e01b81526011600452602481fd5b5060010190565b634e487b7160e01b600052604160045260246000fd5b600060033d1115612fe657600481823e5160e01c5b90565b600060443d1015612ff75790565b6040516003193d81016004833e81513d6001600160401b03816024840111818411171561302657505050505090565b828501915081518181111561303e5750505050505090565b843d87010160208285010111156130585750505050505090565b61306760208286010187612f68565b509095945050505050565b6001600160a01b038116811461308757600080fd5b5056fe5065726d697373696f6e733a207072696d617279206f66206f70657261746f72206c61636b73207065726d697373696f6e20666f722063726564656e7469616c547970655065726d697373696f6e733a207072696d617279206f66206f70657261746f72206c61636b732063726564656e7469616c3a6964656e746974796973737565207065726d697373696f6e5065726d697373696f6e733a207072696d617279206f66206f70657261746f72206c61636b7320726571756573746564207065726d697373696f6e5065726d697373696f6e733a207072696d617279206f66206f70657261746f72206c61636b732063726564656e7469616c3a6973737565207065726d697373696f6e5065726d697373696f6e733a207072696d617279206f66206f70657261746f72206c61636b732063726564656e7469616c3a636f6e746163746973737565207065726d697373696f6ea2646970667358221220b4a25a77a0b56e2c5ef18602ac58cd6dae528264b6cd40c8c98ff462d5f3a38164736f6c63430008040033",
  "immutableReferences": {},
  "generatedSources": [],
  "deployedGeneratedSources": [
    {
      "ast": {
        "nodeType": "YulBlock",
        "src": "0:28058:23",
        "statements": [
          {
            "nodeType": "YulBlock",
            "src": "6:3:23",
            "statements": []
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "77:695:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "126:24:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "135:5:23"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "142:5:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "128:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "128:20:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "128:20:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "105:6:23"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "113:4:23",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "101:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "101:17:23"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "120:3:23"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "97:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "97:27:23"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "90:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "90:35:23"
                  },
                  "nodeType": "YulIf",
                  "src": "87:2:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "159:30:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "182:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "169:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "169:20:23"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "163:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "198:14:23",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "208:4:23",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "202:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "221:52:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "270:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "array_allocation_size_array_bytes2_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "231:38:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "231:42:23"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "225:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "282:23:23",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "302:2:23",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "296:5:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "296:9:23"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulTypedName",
                      "src": "286:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "334:6:23"
                      },
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "342:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "finalize_allocation",
                      "nodeType": "YulIdentifier",
                      "src": "314:19:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "314:31:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "314:31:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "354:17:23",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "365:6:23"
                  },
                  "variables": [
                    {
                      "name": "dst",
                      "nodeType": "YulTypedName",
                      "src": "358:3:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "387:6:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "395:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "380:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "380:18:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "380:18:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "407:22:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "418:6:23"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "426:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "414:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "414:15:23"
                  },
                  "variableNames": [
                    {
                      "name": "dst",
                      "nodeType": "YulIdentifier",
                      "src": "407:3:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "438:26:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "453:6:23"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "461:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "449:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "449:15:23"
                  },
                  "variables": [
                    {
                      "name": "src",
                      "nodeType": "YulTypedName",
                      "src": "442:3:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "518:24:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "527:5:23"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "534:5:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "520:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "520:20:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "520:20:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "487:6:23"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "499:1:23",
                                    "type": "",
                                    "value": "5"
                                  },
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "502:2:23"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "495:3:23"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "495:10:23"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "483:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "483:23:23"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "508:2:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "479:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "479:32:23"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "513:3:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "476:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "476:41:23"
                  },
                  "nodeType": "YulIf",
                  "src": "473:2:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "551:14:23",
                  "value": {
                    "name": "array",
                    "nodeType": "YulIdentifier",
                    "src": "560:5:23"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "555:1:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "619:123:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "640:3:23"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "src",
                                  "nodeType": "YulIdentifier",
                                  "src": "663:3:23"
                                }
                              ],
                              "functionName": {
                                "name": "abi_decode_bytes2",
                                "nodeType": "YulIdentifier",
                                "src": "645:17:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "645:22:23"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "633:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "633:35:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "633:35:23"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "681:19:23",
                        "value": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "692:3:23"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "697:2:23"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "688:3:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "688:12:23"
                        },
                        "variableNames": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "681:3:23"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "713:19:23",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nodeType": "YulIdentifier",
                              "src": "724:3:23"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "729:2:23"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "720:3:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "720:12:23"
                        },
                        "variableNames": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "713:3:23"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "585:1:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "588:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "582:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "582:9:23"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "592:18:23",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "594:14:23",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "603:1:23"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "606:1:23",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "599:3:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "599:9:23"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "594:1:23"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "578:3:23",
                    "statements": []
                  },
                  "src": "574:168:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "751:15:23",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "760:6:23"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "751:5:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_array_bytes2_dyn",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "51:6:23",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "59:3:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "67:5:23",
                "type": ""
              }
            ],
            "src": "14:758:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "861:1134:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "910:24:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "919:5:23"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "926:5:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "912:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "912:20:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "912:20:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "889:6:23"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "897:4:23",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "885:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "885:17:23"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "904:3:23"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "881:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "881:27:23"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "874:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "874:35:23"
                  },
                  "nodeType": "YulIf",
                  "src": "871:2:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "943:30:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "966:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "953:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "953:20:23"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "947:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "982:14:23",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "992:4:23",
                    "type": "",
                    "value": "0x20"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "986:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1005:52:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1054:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "array_allocation_size_array_bytes2_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "1015:38:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1015:42:23"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "1009:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1066:12:23",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "1076:2:23",
                    "type": "",
                    "value": "64"
                  },
                  "variables": [
                    {
                      "name": "_4",
                      "nodeType": "YulTypedName",
                      "src": "1070:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1087:23:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "_4",
                        "nodeType": "YulIdentifier",
                        "src": "1107:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "1101:5:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1101:9:23"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulTypedName",
                      "src": "1091:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "1139:6:23"
                      },
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "1147:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "finalize_allocation",
                      "nodeType": "YulIdentifier",
                      "src": "1119:19:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1119:31:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1119:31:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1159:17:23",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "1170:6:23"
                  },
                  "variables": [
                    {
                      "name": "dst",
                      "nodeType": "YulTypedName",
                      "src": "1163:3:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "1192:6:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1200:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "1185:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1185:18:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "1185:18:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1212:22:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "1223:6:23"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "1231:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1219:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1219:15:23"
                  },
                  "variableNames": [
                    {
                      "name": "dst",
                      "nodeType": "YulIdentifier",
                      "src": "1212:3:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1243:26:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "1258:6:23"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "1266:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "1254:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1254:15:23"
                  },
                  "variables": [
                    {
                      "name": "src",
                      "nodeType": "YulTypedName",
                      "src": "1247:3:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1278:14:23",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "1288:4:23",
                    "type": "",
                    "value": "0x60"
                  },
                  "variables": [
                    {
                      "name": "_5",
                      "nodeType": "YulTypedName",
                      "src": "1282:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1347:24:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "1356:5:23"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "1363:5:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "1349:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1349:20:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1349:20:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "1315:6:23"
                              },
                              {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "1327:2:23"
                                  },
                                  {
                                    "name": "_5",
                                    "nodeType": "YulIdentifier",
                                    "src": "1331:2:23"
                                  }
                                ],
                                "functionName": {
                                  "name": "mul",
                                  "nodeType": "YulIdentifier",
                                  "src": "1323:3:23"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1323:11:23"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "1311:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "1311:24:23"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "1337:2:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "1307:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "1307:33:23"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "1342:3:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "1304:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1304:42:23"
                  },
                  "nodeType": "YulIf",
                  "src": "1301:2:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "1380:14:23",
                  "value": {
                    "name": "array",
                    "nodeType": "YulIdentifier",
                    "src": "1389:5:23"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "1384:1:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "1448:517:23",
                    "statements": [
                      {
                        "body": {
                          "nodeType": "YulBlock",
                          "src": "1488:24:23",
                          "statements": [
                            {
                              "expression": {
                                "arguments": [
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "1497:5:23"
                                  },
                                  {
                                    "name": "array",
                                    "nodeType": "YulIdentifier",
                                    "src": "1504:5:23"
                                  }
                                ],
                                "functionName": {
                                  "name": "revert",
                                  "nodeType": "YulIdentifier",
                                  "src": "1490:6:23"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "1490:20:23"
                              },
                              "nodeType": "YulExpressionStatement",
                              "src": "1490:20:23"
                            }
                          ]
                        },
                        "condition": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "end",
                                  "nodeType": "YulIdentifier",
                                  "src": "1473:3:23"
                                },
                                {
                                  "name": "src",
                                  "nodeType": "YulIdentifier",
                                  "src": "1478:3:23"
                                }
                              ],
                              "functionName": {
                                "name": "sub",
                                "nodeType": "YulIdentifier",
                                "src": "1469:3:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1469:13:23"
                            },
                            {
                              "name": "_5",
                              "nodeType": "YulIdentifier",
                              "src": "1484:2:23"
                            }
                          ],
                          "functionName": {
                            "name": "slt",
                            "nodeType": "YulIdentifier",
                            "src": "1465:3:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1465:22:23"
                        },
                        "nodeType": "YulIf",
                        "src": "1462:2:23"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "1525:25:23",
                        "value": {
                          "arguments": [
                            {
                              "name": "_4",
                              "nodeType": "YulIdentifier",
                              "src": "1547:2:23"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "1541:5:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1541:9:23"
                        },
                        "variables": [
                          {
                            "name": "memPtr_1",
                            "nodeType": "YulTypedName",
                            "src": "1529:8:23",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "memPtr_1",
                              "nodeType": "YulIdentifier",
                              "src": "1588:8:23"
                            }
                          ],
                          "functionName": {
                            "name": "finalize_allocation_3643",
                            "nodeType": "YulIdentifier",
                            "src": "1563:24:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1563:34:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1563:34:23"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "1610:30:23",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nodeType": "YulIdentifier",
                              "src": "1636:3:23"
                            }
                          ],
                          "functionName": {
                            "name": "calldataload",
                            "nodeType": "YulIdentifier",
                            "src": "1623:12:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1623:17:23"
                        },
                        "variables": [
                          {
                            "name": "value",
                            "nodeType": "YulTypedName",
                            "src": "1614:5:23",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value",
                              "nodeType": "YulIdentifier",
                              "src": "1678:5:23"
                            }
                          ],
                          "functionName": {
                            "name": "validator_revert_address",
                            "nodeType": "YulIdentifier",
                            "src": "1653:24:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1653:31:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1653:31:23"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "memPtr_1",
                              "nodeType": "YulIdentifier",
                              "src": "1704:8:23"
                            },
                            {
                              "name": "value",
                              "nodeType": "YulIdentifier",
                              "src": "1714:5:23"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "1697:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1697:23:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1697:23:23"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "memPtr_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1744:8:23"
                                },
                                {
                                  "name": "_2",
                                  "nodeType": "YulIdentifier",
                                  "src": "1754:2:23"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "1740:3:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1740:17:23"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "src",
                                      "nodeType": "YulIdentifier",
                                      "src": "1776:3:23"
                                    },
                                    {
                                      "name": "_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "1781:2:23"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "1772:3:23"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "1772:12:23"
                                }
                              ],
                              "functionName": {
                                "name": "calldataload",
                                "nodeType": "YulIdentifier",
                                "src": "1759:12:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1759:26:23"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "1733:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1733:53:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1733:53:23"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "memPtr_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "1810:8:23"
                                },
                                {
                                  "name": "_4",
                                  "nodeType": "YulIdentifier",
                                  "src": "1820:2:23"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "1806:3:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1806:17:23"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "src",
                                      "nodeType": "YulIdentifier",
                                      "src": "1847:3:23"
                                    },
                                    {
                                      "name": "_4",
                                      "nodeType": "YulIdentifier",
                                      "src": "1852:2:23"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "1843:3:23"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "1843:12:23"
                                }
                              ],
                              "functionName": {
                                "name": "abi_decode_uint32",
                                "nodeType": "YulIdentifier",
                                "src": "1825:17:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1825:31:23"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "1799:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1799:58:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1799:58:23"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "1877:3:23"
                            },
                            {
                              "name": "memPtr_1",
                              "nodeType": "YulIdentifier",
                              "src": "1882:8:23"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "1870:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1870:21:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "1870:21:23"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "1904:19:23",
                        "value": {
                          "arguments": [
                            {
                              "name": "dst",
                              "nodeType": "YulIdentifier",
                              "src": "1915:3:23"
                            },
                            {
                              "name": "_2",
                              "nodeType": "YulIdentifier",
                              "src": "1920:2:23"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "1911:3:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1911:12:23"
                        },
                        "variableNames": [
                          {
                            "name": "dst",
                            "nodeType": "YulIdentifier",
                            "src": "1904:3:23"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "1936:19:23",
                        "value": {
                          "arguments": [
                            {
                              "name": "src",
                              "nodeType": "YulIdentifier",
                              "src": "1947:3:23"
                            },
                            {
                              "name": "_5",
                              "nodeType": "YulIdentifier",
                              "src": "1952:2:23"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "1943:3:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1943:12:23"
                        },
                        "variableNames": [
                          {
                            "name": "src",
                            "nodeType": "YulIdentifier",
                            "src": "1936:3:23"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "1414:1:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "1417:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "1411:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "1411:9:23"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "1421:18:23",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "1423:14:23",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "1432:1:23"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "1435:1:23",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "1428:3:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "1428:9:23"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "1423:1:23"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "1407:3:23",
                    "statements": []
                  },
                  "src": "1403:562:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "1974:15:23",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "1983:6:23"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "1974:5:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_array_struct_CredentialIdentifier_dyn",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "835:6:23",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "843:3:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "851:5:23",
                "type": ""
              }
            ],
            "src": "777:1218:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2048:120:23",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2058:29:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2080:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2067:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2067:20:23"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "2058:5:23"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2146:16:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2155:1:23",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2158:1:23",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2148:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2148:12:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2148:12:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "2109:5:23"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2120:5:23"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2131:3:23",
                                    "type": "",
                                    "value": "240"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2136:5:23",
                                    "type": "",
                                    "value": "65535"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "2127:3:23"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2127:15:23"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "2116:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2116:27:23"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "2106:2:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2106:38:23"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "2099:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2099:46:23"
                  },
                  "nodeType": "YulIf",
                  "src": "2096:2:23"
                }
              ]
            },
            "name": "abi_decode_bytes2",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "2027:6:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "2038:5:23",
                "type": ""
              }
            ],
            "src": "2000:168:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2225:523:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2274:24:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "2283:5:23"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "2290:5:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2276:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2276:20:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2276:20:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "2253:6:23"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2261:4:23",
                                "type": "",
                                "value": "0x1f"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2249:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2249:17:23"
                          },
                          {
                            "name": "end",
                            "nodeType": "YulIdentifier",
                            "src": "2268:3:23"
                          }
                        ],
                        "functionName": {
                          "name": "slt",
                          "nodeType": "YulIdentifier",
                          "src": "2245:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2245:27:23"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "2238:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2238:35:23"
                  },
                  "nodeType": "YulIf",
                  "src": "2235:2:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2307:30:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2330:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2317:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2317:20:23"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "2311:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2376:22:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "2378:16:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2378:18:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2378:18:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "2352:2:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2356:18:23",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2349:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2349:26:23"
                  },
                  "nodeType": "YulIf",
                  "src": "2346:2:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "2407:23:23",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "2427:2:23",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "2421:5:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2421:9:23"
                  },
                  "variables": [
                    {
                      "name": "memPtr",
                      "nodeType": "YulTypedName",
                      "src": "2411:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "2459:6:23"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "_1",
                                    "nodeType": "YulIdentifier",
                                    "src": "2479:2:23"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2483:4:23",
                                    "type": "",
                                    "value": "0x1f"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "2475:3:23"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2475:13:23"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "2494:2:23",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "2490:3:23"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "2490:7:23"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "2471:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2471:27:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2500:4:23",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2467:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2467:38:23"
                      }
                    ],
                    "functionName": {
                      "name": "finalize_allocation",
                      "nodeType": "YulIdentifier",
                      "src": "2439:19:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2439:67:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2439:67:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "2522:6:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "2530:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2515:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2515:18:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2515:18:23"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2581:24:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "2590:5:23"
                            },
                            {
                              "name": "array",
                              "nodeType": "YulIdentifier",
                              "src": "2597:5:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2583:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2583:20:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2583:20:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "2556:6:23"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "2564:2:23"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2552:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2552:15:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2569:4:23",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2548:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2548:26:23"
                      },
                      {
                        "name": "end",
                        "nodeType": "YulIdentifier",
                        "src": "2576:3:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "2545:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2545:35:23"
                  },
                  "nodeType": "YulIf",
                  "src": "2542:2:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "2631:6:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2639:4:23",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2627:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2627:17:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "2650:6:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2658:4:23",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2646:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2646:17:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "2665:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "2614:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2614:54:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2614:54:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "memPtr",
                                "nodeType": "YulIdentifier",
                                "src": "2692:6:23"
                              },
                              {
                                "name": "_1",
                                "nodeType": "YulIdentifier",
                                "src": "2700:2:23"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "2688:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2688:15:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "2705:4:23",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "2684:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2684:26:23"
                      },
                      {
                        "name": "array",
                        "nodeType": "YulIdentifier",
                        "src": "2712:5:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "2677:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2677:41:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "2677:41:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "2727:15:23",
                  "value": {
                    "name": "memPtr",
                    "nodeType": "YulIdentifier",
                    "src": "2736:6:23"
                  },
                  "variableNames": [
                    {
                      "name": "array",
                      "nodeType": "YulIdentifier",
                      "src": "2727:5:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_bytes",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "2199:6:23",
                "type": ""
              },
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "2207:3:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "array",
                "nodeType": "YulTypedName",
                "src": "2215:5:23",
                "type": ""
              }
            ],
            "src": "2173:575:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2801:115:23",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "2811:29:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "2833:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "2820:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2820:20:23"
                  },
                  "variableNames": [
                    {
                      "name": "value",
                      "nodeType": "YulIdentifier",
                      "src": "2811:5:23"
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "2894:16:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2903:1:23",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "2906:1:23",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "2896:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "2896:12:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "2896:12:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "2862:5:23"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "2873:5:23"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "2880:10:23",
                                "type": "",
                                "value": "0xffffffff"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "2869:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "2869:22:23"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "2859:2:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "2859:33:23"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "2852:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "2852:41:23"
                  },
                  "nodeType": "YulIf",
                  "src": "2849:2:23"
                }
              ]
            },
            "name": "abi_decode_uint32",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "offset",
                "nodeType": "YulTypedName",
                "src": "2780:6:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "2791:5:23",
                "type": ""
              }
            ],
            "src": "2753:163:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "2991:187:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3037:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "3046:6:23"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "3054:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3039:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3039:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3039:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3012:7:23"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3021:9:23"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "3008:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3008:23:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3033:2:23",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "3004:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3004:32:23"
                  },
                  "nodeType": "YulIf",
                  "src": "3001:2:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3072:36:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3098:9:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3085:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3085:23:23"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "3076:5:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "3142:5:23"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "3117:24:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3117:31:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3117:31:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3157:15:23",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "3167:5:23"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "3157:6:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "2957:9:23",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "2968:7:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "2980:6:23",
                "type": ""
              }
            ],
            "src": "2921:257:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3264:180:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3310:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "3319:6:23"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "3327:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3312:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3312:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3312:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3285:7:23"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3294:9:23"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "3281:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3281:23:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3306:2:23",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "3277:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3277:32:23"
                  },
                  "nodeType": "YulIf",
                  "src": "3274:2:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3345:29:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3364:9:23"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "3358:5:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3358:16:23"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "3349:5:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "3408:5:23"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "3383:24:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3383:31:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3383:31:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3423:15:23",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "3433:5:23"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "3423:6:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_address_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3230:9:23",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "3241:7:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3253:6:23",
                "type": ""
              }
            ],
            "src": "3183:261:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "3560:390:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3606:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "3615:6:23"
                            },
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "3623:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3608:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3608:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3608:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "3581:7:23"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3590:9:23"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "3577:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3577:23:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3602:2:23",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "3573:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3573:32:23"
                  },
                  "nodeType": "YulIf",
                  "src": "3570:2:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3641:36:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "3667:9:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3654:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3654:23:23"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "3645:5:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "3711:5:23"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "3686:24:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3686:31:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "3686:31:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3726:15:23",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "3736:5:23"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "3726:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "3750:46:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3781:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "3792:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3777:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3777:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "3764:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3764:32:23"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "3754:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "3839:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "3848:6:23"
                            },
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "3856:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "3841:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "3841:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "3841:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "3811:6:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "3819:18:23",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "3808:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3808:30:23"
                  },
                  "nodeType": "YulIf",
                  "src": "3805:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "3874:70:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "3916:9:23"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "3927:6:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "3912:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "3912:22:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "3936:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_bytes2_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "3884:27:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "3884:60:23"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "3874:6:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_array$_t_bytes2_$dyn_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3518:9:23",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "3529:7:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "3541:6:23",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "3549:6:23",
                "type": ""
              }
            ],
            "src": "3449:501:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4041:243:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4087:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "4096:6:23"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "4104:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4089:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4089:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4089:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4062:7:23"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4071:9:23"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4058:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4058:23:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4083:2:23",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4054:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4054:32:23"
                  },
                  "nodeType": "YulIf",
                  "src": "4051:2:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4122:36:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4148:9:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4135:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4135:23:23"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "4126:5:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "4192:5:23"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "4167:24:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4167:31:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4167:31:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4207:15:23",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "4217:5:23"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "4207:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4231:47:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4263:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4274:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4259:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4259:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes2",
                      "nodeType": "YulIdentifier",
                      "src": "4241:17:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4241:37:23"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "4231:6:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_bytes2",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "3999:9:23",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4010:7:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4022:6:23",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "4030:6:23",
                "type": ""
              }
            ],
            "src": "3955:329:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4376:238:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4422:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "4431:6:23"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "4439:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4424:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4424:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4424:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4397:7:23"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4406:9:23"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4393:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4393:23:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4418:2:23",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4389:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4389:32:23"
                  },
                  "nodeType": "YulIf",
                  "src": "4386:2:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4457:36:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4483:9:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4470:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4470:23:23"
                  },
                  "variables": [
                    {
                      "name": "value",
                      "nodeType": "YulTypedName",
                      "src": "4461:5:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "4527:5:23"
                      }
                    ],
                    "functionName": {
                      "name": "validator_revert_address",
                      "nodeType": "YulIdentifier",
                      "src": "4502:24:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4502:31:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "4502:31:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4542:15:23",
                  "value": {
                    "name": "value",
                    "nodeType": "YulIdentifier",
                    "src": "4552:5:23"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "4542:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4566:42:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4593:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "4604:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4589:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4589:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4576:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4576:32:23"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "4566:6:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_addresst_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4334:9:23",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4345:7:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4357:6:23",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "4365:6:23",
                "type": ""
              }
            ],
            "src": "4289:325:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "4713:272:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4759:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "4768:6:23"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "4776:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4761:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4761:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4761:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "4734:7:23"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4743:9:23"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "4730:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4730:23:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4755:2:23",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "4726:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4726:32:23"
                  },
                  "nodeType": "YulIf",
                  "src": "4723:2:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "4794:37:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "4821:9:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "4808:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4808:23:23"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "4798:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "4874:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "4883:6:23"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "4891:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "4876:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "4876:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "4876:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "4846:6:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "4854:18:23",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "4843:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4843:30:23"
                  },
                  "nodeType": "YulIf",
                  "src": "4840:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "4909:70:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "4951:9:23"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "4962:6:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "4947:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "4947:22:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "4971:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_bytes2_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "4919:27:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "4919:60:23"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "4909:6:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_array$_t_bytes2_$dyn_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "4679:9:23",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "4690:7:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "4702:6:23",
                "type": ""
              }
            ],
            "src": "4619:366:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5123:293:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5169:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "5178:6:23"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "5186:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5171:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5171:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5171:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "5144:7:23"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5153:9:23"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "5140:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5140:23:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5165:2:23",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "5136:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5136:32:23"
                  },
                  "nodeType": "YulIf",
                  "src": "5133:2:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5204:37:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5231:9:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5218:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5218:23:23"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "5208:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5284:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "5293:6:23"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "5301:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5286:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5286:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5286:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "5256:6:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5264:18:23",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "5253:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5253:30:23"
                  },
                  "nodeType": "YulIf",
                  "src": "5250:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5319:91:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5382:9:23"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "5393:6:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5378:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5378:22:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5402:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_struct_CredentialIdentifier_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "5329:48:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5329:81:23"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "5319:6:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5089:9:23",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "5100:7:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5112:6:23",
                "type": ""
              }
            ],
            "src": "4990:426:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "5635:861:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5682:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "5691:6:23"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "5699:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5684:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5684:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5684:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "5656:7:23"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5665:9:23"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "5652:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5652:23:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "5677:3:23",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "5648:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5648:33:23"
                  },
                  "nodeType": "YulIf",
                  "src": "5645:2:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5717:37:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "5744:9:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5731:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5731:23:23"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "5721:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5763:28:23",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "5773:18:23",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "5767:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "5818:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "5827:6:23"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "5835:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "5820:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "5820:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "5820:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "5806:6:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "5814:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "5803:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5803:14:23"
                  },
                  "nodeType": "YulIf",
                  "src": "5800:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "5853:91:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5916:9:23"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "5927:6:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5912:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5912:22:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "5936:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_struct_CredentialIdentifier_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "5863:48:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5863:81:23"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "5853:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "5953:48:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "5986:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "5997:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "5982:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "5982:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "5969:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "5969:32:23"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "5957:8:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6030:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "6039:6:23"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "6047:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6032:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6032:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6032:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "6016:8:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "6026:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6013:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6013:16:23"
                  },
                  "nodeType": "YulIf",
                  "src": "6010:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6065:61:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6096:9:23"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "6107:8:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6092:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6092:24:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "6118:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "6075:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6075:51:23"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "6065:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6135:48:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6168:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6179:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6164:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6164:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6151:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6151:32:23"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nodeType": "YulTypedName",
                      "src": "6139:8:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6212:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "6221:6:23"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "6229:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6214:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6214:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6214:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "6198:8:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "6208:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6195:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6195:16:23"
                  },
                  "nodeType": "YulIf",
                  "src": "6192:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6247:61:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6278:9:23"
                          },
                          {
                            "name": "offset_2",
                            "nodeType": "YulIdentifier",
                            "src": "6289:8:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6274:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6274:24:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "6300:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "6257:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6257:51:23"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "6247:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6317:48:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6350:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "6361:2:23",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6346:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6346:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6333:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6333:32:23"
                  },
                  "variables": [
                    {
                      "name": "offset_3",
                      "nodeType": "YulTypedName",
                      "src": "6321:8:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6394:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value3",
                              "nodeType": "YulIdentifier",
                              "src": "6403:6:23"
                            },
                            {
                              "name": "value3",
                              "nodeType": "YulIdentifier",
                              "src": "6411:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6396:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6396:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6396:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_3",
                        "nodeType": "YulIdentifier",
                        "src": "6380:8:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "6390:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6377:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6377:16:23"
                  },
                  "nodeType": "YulIf",
                  "src": "6374:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6429:61:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6460:9:23"
                          },
                          {
                            "name": "offset_3",
                            "nodeType": "YulIdentifier",
                            "src": "6471:8:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "6456:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6456:24:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "6482:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "6439:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6439:51:23"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "6429:6:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptrt_string_memory_ptrt_string_memory_ptrt_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "5577:9:23",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "5588:7:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "5600:6:23",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "5608:6:23",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "5616:6:23",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "5624:6:23",
                "type": ""
              }
            ],
            "src": "5421:1075:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "6741:1044:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6788:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "6797:6:23"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "6805:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6790:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6790:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6790:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "6762:7:23"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "6771:9:23"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "6758:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "6758:23:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "6783:3:23",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "6754:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6754:33:23"
                  },
                  "nodeType": "YulIf",
                  "src": "6751:2:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6823:37:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "6850:9:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "6837:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6837:23:23"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "6827:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "6869:28:23",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "6879:18:23",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "6873:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "6924:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "6933:6:23"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "6941:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "6926:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "6926:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "6926:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "6912:6:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "6920:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "6909:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6909:14:23"
                  },
                  "nodeType": "YulIf",
                  "src": "6906:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "6959:91:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7022:9:23"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "7033:6:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7018:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7018:22:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "7042:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_array_struct_CredentialIdentifier_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "6969:48:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "6969:81:23"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "6959:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7059:48:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7092:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7103:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7088:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7088:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7075:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7075:32:23"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "7063:8:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7136:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "7145:6:23"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "7153:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7138:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7138:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7138:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "7122:8:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "7132:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "7119:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7119:16:23"
                  },
                  "nodeType": "YulIf",
                  "src": "7116:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7171:61:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7202:9:23"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "7213:8:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7198:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7198:24:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "7224:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "7181:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7181:51:23"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "7171:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7241:48:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7274:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7285:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7270:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7270:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7257:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7257:32:23"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nodeType": "YulTypedName",
                      "src": "7245:8:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7318:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "7327:6:23"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "7335:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7320:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7320:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7320:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "7304:8:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "7314:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "7301:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7301:16:23"
                  },
                  "nodeType": "YulIf",
                  "src": "7298:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7353:61:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7384:9:23"
                          },
                          {
                            "name": "offset_2",
                            "nodeType": "YulIdentifier",
                            "src": "7395:8:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7380:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7380:24:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "7406:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "7363:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7363:51:23"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "7353:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7423:48:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7456:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7467:2:23",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7452:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7452:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7439:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7439:32:23"
                  },
                  "variables": [
                    {
                      "name": "offset_3",
                      "nodeType": "YulTypedName",
                      "src": "7427:8:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7500:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "7509:6:23"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "7517:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7502:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7502:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7502:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_3",
                        "nodeType": "YulIdentifier",
                        "src": "7486:8:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "7496:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "7483:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7483:16:23"
                  },
                  "nodeType": "YulIf",
                  "src": "7480:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7535:61:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7566:9:23"
                          },
                          {
                            "name": "offset_3",
                            "nodeType": "YulIdentifier",
                            "src": "7577:8:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7562:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7562:24:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "7588:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "7545:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7545:51:23"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "7535:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "7605:49:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7638:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "7649:3:23",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7634:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7634:19:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "7621:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7621:33:23"
                  },
                  "variables": [
                    {
                      "name": "offset_4",
                      "nodeType": "YulTypedName",
                      "src": "7609:8:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7683:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "7692:6:23"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "7700:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7685:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7685:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7685:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_4",
                        "nodeType": "YulIdentifier",
                        "src": "7669:8:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "7679:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "7666:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7666:16:23"
                  },
                  "nodeType": "YulIf",
                  "src": "7663:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7718:61:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7749:9:23"
                          },
                          {
                            "name": "offset_4",
                            "nodeType": "YulIdentifier",
                            "src": "7760:8:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "7745:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7745:24:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "7771:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "7728:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7728:51:23"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "7718:6:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptrt_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "6675:9:23",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "6686:7:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "6698:6:23",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "6706:6:23",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "6714:6:23",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "6722:6:23",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "6730:6:23",
                "type": ""
              }
            ],
            "src": "6501:1284:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "7859:125:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "7905:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "7914:6:23"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "7922:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "7907:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "7907:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "7907:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "7880:7:23"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "7889:9:23"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "7876:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "7876:23:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "7901:2:23",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "7872:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7872:32:23"
                  },
                  "nodeType": "YulIf",
                  "src": "7869:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "7940:38:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "7968:9:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes2",
                      "nodeType": "YulIdentifier",
                      "src": "7950:17:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "7950:28:23"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "7940:6:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes2",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "7825:9:23",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "7836:7:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "7848:6:23",
                "type": ""
              }
            ],
            "src": "7790:194:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "8171:812:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8218:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "8227:6:23"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "8235:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8220:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8220:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8220:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "8192:7:23"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8201:9:23"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "8188:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8188:23:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "8213:3:23",
                        "type": "",
                        "value": "192"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "8184:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8184:33:23"
                  },
                  "nodeType": "YulIf",
                  "src": "8181:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8253:38:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "8281:9:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes2",
                      "nodeType": "YulIdentifier",
                      "src": "8263:17:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8263:28:23"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "8253:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8300:46:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8331:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8342:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8327:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8327:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8314:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8314:32:23"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "8304:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8355:28:23",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "8365:18:23",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "8359:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8410:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "8419:6:23"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "8427:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8412:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8412:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8412:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "8398:6:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "8406:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "8395:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8395:14:23"
                  },
                  "nodeType": "YulIf",
                  "src": "8392:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8445:59:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8476:9:23"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "8487:6:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8472:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8472:22:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "8496:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "8455:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8455:49:23"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "8445:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8513:42:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8540:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8551:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8536:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8536:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8523:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8523:32:23"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "8513:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8564:47:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8596:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8607:2:23",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8592:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8592:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_uint32",
                      "nodeType": "YulIdentifier",
                      "src": "8574:17:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8574:37:23"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "8564:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8620:49:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8653:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8664:3:23",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8649:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8649:19:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8636:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8636:33:23"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "8624:8:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8698:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value5",
                              "nodeType": "YulIdentifier",
                              "src": "8707:6:23"
                            },
                            {
                              "name": "value5",
                              "nodeType": "YulIdentifier",
                              "src": "8715:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8700:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8700:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8700:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "8684:8:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "8694:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "8681:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8681:16:23"
                  },
                  "nodeType": "YulIf",
                  "src": "8678:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8733:61:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8764:9:23"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "8775:8:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8760:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8760:24:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "8786:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "8743:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8743:51:23"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "8733:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "8803:49:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8836:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "8847:3:23",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8832:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8832:19:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "8819:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8819:33:23"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nodeType": "YulTypedName",
                      "src": "8807:8:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "8881:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value5",
                              "nodeType": "YulIdentifier",
                              "src": "8890:6:23"
                            },
                            {
                              "name": "value5",
                              "nodeType": "YulIdentifier",
                              "src": "8898:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "8883:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "8883:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "8883:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "8867:8:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "8877:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "8864:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8864:16:23"
                  },
                  "nodeType": "YulIf",
                  "src": "8861:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "8916:61:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "8947:9:23"
                          },
                          {
                            "name": "offset_2",
                            "nodeType": "YulIdentifier",
                            "src": "8958:8:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "8943:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "8943:24:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "8969:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "8926:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "8926:51:23"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nodeType": "YulIdentifier",
                      "src": "8916:6:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes2t_bytes_memory_ptrt_uint256t_uint32t_string_memory_ptrt_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "8097:9:23",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "8108:7:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "8120:6:23",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "8128:6:23",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "8136:6:23",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "8144:6:23",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "8152:6:23",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "8160:6:23",
                "type": ""
              }
            ],
            "src": "7989:994:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "9196:995:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9243:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "9252:6:23"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "9260:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9245:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9245:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9245:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "9217:7:23"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9226:9:23"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "9213:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9213:23:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "9238:3:23",
                        "type": "",
                        "value": "224"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "9209:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9209:33:23"
                  },
                  "nodeType": "YulIf",
                  "src": "9206:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9278:38:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "9306:9:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes2",
                      "nodeType": "YulIdentifier",
                      "src": "9288:17:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9288:28:23"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "9278:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9325:46:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9356:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9367:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9352:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9352:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "9339:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9339:32:23"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "9329:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9380:28:23",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "9390:18:23",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "9384:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9435:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "9444:6:23"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "9452:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9437:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9437:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9437:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "9423:6:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "9431:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "9420:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9420:14:23"
                  },
                  "nodeType": "YulIf",
                  "src": "9417:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9470:59:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9501:9:23"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "9512:6:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9497:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9497:22:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "9521:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "9480:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9480:49:23"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "9470:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9538:42:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9565:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9576:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9561:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9561:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "9548:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9548:32:23"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "9538:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9589:47:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9621:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9632:2:23",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9617:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9617:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_uint32",
                      "nodeType": "YulIdentifier",
                      "src": "9599:17:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9599:37:23"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "9589:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9645:49:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9678:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9689:3:23",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9674:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9674:19:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "9661:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9661:33:23"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "9649:8:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9723:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "9732:6:23"
                            },
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "9740:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9725:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9725:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9725:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "9709:8:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "9719:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "9706:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9706:16:23"
                  },
                  "nodeType": "YulIf",
                  "src": "9703:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9758:61:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9789:9:23"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "9800:8:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9785:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9785:24:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "9811:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "9768:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9768:51:23"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "9758:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "9828:49:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9861:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "9872:3:23",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9857:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9857:19:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "9844:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9844:33:23"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nodeType": "YulTypedName",
                      "src": "9832:8:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "9906:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "9915:6:23"
                            },
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "9923:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "9908:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "9908:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "9908:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "9892:8:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "9902:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "9889:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9889:16:23"
                  },
                  "nodeType": "YulIf",
                  "src": "9886:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "9941:61:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "9972:9:23"
                          },
                          {
                            "name": "offset_2",
                            "nodeType": "YulIdentifier",
                            "src": "9983:8:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "9968:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "9968:24:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "9994:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "9951:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "9951:51:23"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nodeType": "YulIdentifier",
                      "src": "9941:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10011:49:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10044:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10055:3:23",
                            "type": "",
                            "value": "192"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10040:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10040:19:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "10027:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10027:33:23"
                  },
                  "variables": [
                    {
                      "name": "offset_3",
                      "nodeType": "YulTypedName",
                      "src": "10015:8:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10089:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "10098:6:23"
                            },
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "10106:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "10091:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10091:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10091:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_3",
                        "nodeType": "YulIdentifier",
                        "src": "10075:8:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "10085:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "10072:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10072:16:23"
                  },
                  "nodeType": "YulIf",
                  "src": "10069:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10124:61:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10155:9:23"
                          },
                          {
                            "name": "offset_3",
                            "nodeType": "YulIdentifier",
                            "src": "10166:8:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10151:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10151:24:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "10177:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "10134:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10134:51:23"
                  },
                  "variableNames": [
                    {
                      "name": "value6",
                      "nodeType": "YulIdentifier",
                      "src": "10124:6:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_bytes2t_bytes_memory_ptrt_uint256t_uint32t_string_memory_ptrt_string_memory_ptrt_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "9114:9:23",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "9125:7:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "9137:6:23",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "9145:6:23",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "9153:6:23",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "9161:6:23",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "9169:6:23",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "9177:6:23",
                "type": ""
              },
              {
                "name": "value6",
                "nodeType": "YulTypedName",
                "src": "9185:6:23",
                "type": ""
              }
            ],
            "src": "8988:1203:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10303:464:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10349:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "10358:6:23"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "10366:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "10351:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10351:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10351:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "10324:7:23"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10333:9:23"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "10320:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10320:23:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10345:2:23",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "10316:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10316:32:23"
                  },
                  "nodeType": "YulIf",
                  "src": "10313:2:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10384:37:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10411:9:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "10398:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10398:23:23"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "10388:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10430:28:23",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "10440:18:23",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "10434:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10485:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "10494:6:23"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "10502:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "10487:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10487:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10487:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "10473:6:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "10481:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "10470:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10470:14:23"
                  },
                  "nodeType": "YulIf",
                  "src": "10467:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10520:59:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10551:9:23"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "10562:6:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10547:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10547:22:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "10571:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "10530:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10530:49:23"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "10520:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "10588:48:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10621:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "10632:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10617:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10617:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "10604:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10604:32:23"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "10592:8:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10665:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "10674:6:23"
                            },
                            {
                              "name": "value1",
                              "nodeType": "YulIdentifier",
                              "src": "10682:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "10667:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10667:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10667:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "10651:8:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "10661:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "10648:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10648:16:23"
                  },
                  "nodeType": "YulIf",
                  "src": "10645:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10700:61:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10731:9:23"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "10742:8:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "10727:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10727:24:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "10753:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "10710:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10710:51:23"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "10700:6:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "10261:9:23",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "10272:7:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "10284:6:23",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "10292:6:23",
                "type": ""
              }
            ],
            "src": "10196:571:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "10853:113:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "10899:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "10908:6:23"
                            },
                            {
                              "name": "value0",
                              "nodeType": "YulIdentifier",
                              "src": "10916:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "10901:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "10901:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "10901:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "10874:7:23"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "10883:9:23"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "10870:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "10870:23:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "10895:2:23",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "10866:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10866:32:23"
                  },
                  "nodeType": "YulIf",
                  "src": "10863:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "10934:26:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "10950:9:23"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "10944:5:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "10944:16:23"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "10934:6:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256_fromMemory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "10819:9:23",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "10830:7:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "10842:6:23",
                "type": ""
              }
            ],
            "src": "10772:194:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "11153:812:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11200:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "11209:6:23"
                            },
                            {
                              "name": "value2",
                              "nodeType": "YulIdentifier",
                              "src": "11217:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "11202:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11202:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11202:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "11174:7:23"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11183:9:23"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "11170:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11170:23:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "11195:3:23",
                        "type": "",
                        "value": "192"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "11166:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11166:33:23"
                  },
                  "nodeType": "YulIf",
                  "src": "11163:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11235:33:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "11258:9:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "11245:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11245:23:23"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "11235:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11277:47:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11309:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11320:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11305:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11305:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes2",
                      "nodeType": "YulIdentifier",
                      "src": "11287:17:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11287:37:23"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "11277:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11333:47:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11365:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11376:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11361:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11361:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes2",
                      "nodeType": "YulIdentifier",
                      "src": "11343:17:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11343:37:23"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "11333:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11389:46:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11420:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11431:2:23",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11416:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11416:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "11403:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11403:32:23"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "11393:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11444:28:23",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "11454:18:23",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "11448:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11499:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "11508:6:23"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "11516:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "11501:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11501:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11501:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "11487:6:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "11495:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "11484:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11484:14:23"
                  },
                  "nodeType": "YulIf",
                  "src": "11481:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11534:59:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11565:9:23"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "11576:6:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11561:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11561:22:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "11585:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "11544:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11544:49:23"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "11534:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11602:49:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11635:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11646:3:23",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11631:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11631:19:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "11618:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11618:33:23"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "11606:8:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11680:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "11689:6:23"
                            },
                            {
                              "name": "value4",
                              "nodeType": "YulIdentifier",
                              "src": "11697:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "11682:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11682:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11682:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "11666:8:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "11676:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "11663:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11663:16:23"
                  },
                  "nodeType": "YulIf",
                  "src": "11660:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11715:61:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11746:9:23"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "11757:8:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11742:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11742:24:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "11768:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "11725:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11725:51:23"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "11715:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "11785:49:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11818:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "11829:3:23",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11814:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11814:19:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "11801:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11801:33:23"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nodeType": "YulTypedName",
                      "src": "11789:8:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "11863:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value5",
                              "nodeType": "YulIdentifier",
                              "src": "11872:6:23"
                            },
                            {
                              "name": "value5",
                              "nodeType": "YulIdentifier",
                              "src": "11880:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "11865:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "11865:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "11865:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "11849:8:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "11859:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "11846:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11846:16:23"
                  },
                  "nodeType": "YulIf",
                  "src": "11843:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "11898:61:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "11929:9:23"
                          },
                          {
                            "name": "offset_2",
                            "nodeType": "YulIdentifier",
                            "src": "11940:8:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "11925:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "11925:24:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "11951:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "11908:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "11908:51:23"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nodeType": "YulIdentifier",
                      "src": "11898:6:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256t_bytes2t_bytes2t_bytes_memory_ptrt_string_memory_ptrt_string_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "11079:9:23",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "11090:7:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "11102:6:23",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "11110:6:23",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "11118:6:23",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "11126:6:23",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "11134:6:23",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "11142:6:23",
                "type": ""
              }
            ],
            "src": "10971:994:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "12178:995:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "12225:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "12234:6:23"
                            },
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "12242:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "12227:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "12227:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "12227:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "dataEnd",
                            "nodeType": "YulIdentifier",
                            "src": "12199:7:23"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12208:9:23"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "12195:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12195:23:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "12220:3:23",
                        "type": "",
                        "value": "224"
                      }
                    ],
                    "functionName": {
                      "name": "slt",
                      "nodeType": "YulIdentifier",
                      "src": "12191:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12191:33:23"
                  },
                  "nodeType": "YulIf",
                  "src": "12188:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12260:33:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "12283:9:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "12270:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12270:23:23"
                  },
                  "variableNames": [
                    {
                      "name": "value0",
                      "nodeType": "YulIdentifier",
                      "src": "12260:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12302:47:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12334:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12345:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12330:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12330:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes2",
                      "nodeType": "YulIdentifier",
                      "src": "12312:17:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12312:37:23"
                  },
                  "variableNames": [
                    {
                      "name": "value1",
                      "nodeType": "YulIdentifier",
                      "src": "12302:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12358:47:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12390:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12401:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12386:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12386:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes2",
                      "nodeType": "YulIdentifier",
                      "src": "12368:17:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12368:37:23"
                  },
                  "variableNames": [
                    {
                      "name": "value2",
                      "nodeType": "YulIdentifier",
                      "src": "12358:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12414:46:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12445:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12456:2:23",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12441:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12441:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "12428:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12428:32:23"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "12418:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12469:28:23",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "12479:18:23",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "12473:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "12524:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "12533:6:23"
                            },
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "12541:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "12526:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "12526:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "12526:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "12512:6:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "12520:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "12509:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12509:14:23"
                  },
                  "nodeType": "YulIf",
                  "src": "12506:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12559:59:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12590:9:23"
                          },
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "12601:6:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12586:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12586:22:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "12610:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "12569:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12569:49:23"
                  },
                  "variableNames": [
                    {
                      "name": "value3",
                      "nodeType": "YulIdentifier",
                      "src": "12559:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12627:49:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12660:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12671:3:23",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12656:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12656:19:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "12643:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12643:33:23"
                  },
                  "variables": [
                    {
                      "name": "offset_1",
                      "nodeType": "YulTypedName",
                      "src": "12631:8:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "12705:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "12714:6:23"
                            },
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "12722:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "12707:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "12707:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "12707:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_1",
                        "nodeType": "YulIdentifier",
                        "src": "12691:8:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "12701:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "12688:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12688:16:23"
                  },
                  "nodeType": "YulIf",
                  "src": "12685:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12740:61:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12771:9:23"
                          },
                          {
                            "name": "offset_1",
                            "nodeType": "YulIdentifier",
                            "src": "12782:8:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12767:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12767:24:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "12793:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "12750:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12750:51:23"
                  },
                  "variableNames": [
                    {
                      "name": "value4",
                      "nodeType": "YulIdentifier",
                      "src": "12740:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12810:49:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12843:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "12854:3:23",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12839:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12839:19:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "12826:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12826:33:23"
                  },
                  "variables": [
                    {
                      "name": "offset_2",
                      "nodeType": "YulTypedName",
                      "src": "12814:8:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "12888:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "12897:6:23"
                            },
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "12905:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "12890:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "12890:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "12890:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_2",
                        "nodeType": "YulIdentifier",
                        "src": "12874:8:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "12884:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "12871:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12871:16:23"
                  },
                  "nodeType": "YulIf",
                  "src": "12868:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "12923:61:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "12954:9:23"
                          },
                          {
                            "name": "offset_2",
                            "nodeType": "YulIdentifier",
                            "src": "12965:8:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "12950:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "12950:24:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "12976:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "12933:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "12933:51:23"
                  },
                  "variableNames": [
                    {
                      "name": "value5",
                      "nodeType": "YulIdentifier",
                      "src": "12923:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "12993:49:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13026:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13037:3:23",
                            "type": "",
                            "value": "192"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13022:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13022:19:23"
                      }
                    ],
                    "functionName": {
                      "name": "calldataload",
                      "nodeType": "YulIdentifier",
                      "src": "13009:12:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13009:33:23"
                  },
                  "variables": [
                    {
                      "name": "offset_3",
                      "nodeType": "YulTypedName",
                      "src": "12997:8:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "13071:26:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "13080:6:23"
                            },
                            {
                              "name": "value6",
                              "nodeType": "YulIdentifier",
                              "src": "13088:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "13073:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "13073:22:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "13073:22:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "offset_3",
                        "nodeType": "YulIdentifier",
                        "src": "13057:8:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "13067:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "13054:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13054:16:23"
                  },
                  "nodeType": "YulIf",
                  "src": "13051:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13106:61:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "13137:9:23"
                          },
                          {
                            "name": "offset_3",
                            "nodeType": "YulIdentifier",
                            "src": "13148:8:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13133:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13133:24:23"
                      },
                      {
                        "name": "dataEnd",
                        "nodeType": "YulIdentifier",
                        "src": "13159:7:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_decode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "13116:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13116:51:23"
                  },
                  "variableNames": [
                    {
                      "name": "value6",
                      "nodeType": "YulIdentifier",
                      "src": "13106:6:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_decode_tuple_t_uint256t_bytes2t_bytes2t_bytes_memory_ptrt_string_memory_ptrt_string_memory_ptrt_bytes_memory_ptr",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "12096:9:23",
                "type": ""
              },
              {
                "name": "dataEnd",
                "nodeType": "YulTypedName",
                "src": "12107:7:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "12119:6:23",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "12127:6:23",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "12135:6:23",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "12143:6:23",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "12151:6:23",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "12159:6:23",
                "type": ""
              },
              {
                "name": "value6",
                "nodeType": "YulTypedName",
                "src": "12167:6:23",
                "type": ""
              }
            ],
            "src": "11970:1203:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13221:56:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "13238:3:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "13247:5:23"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13258:3:23",
                                "type": "",
                                "value": "240"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "13263:5:23",
                                "type": "",
                                "value": "65535"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "13254:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "13254:15:23"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "13243:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13243:27:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13231:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13231:40:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13231:40:23"
                }
              ]
            },
            "name": "abi_encode_bytes2",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "13205:5:23",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "13212:3:23",
                "type": ""
              }
            ],
            "src": "13178:99:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13331:208:23",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13341:26:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "13361:5:23"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "13355:5:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13355:12:23"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "13345:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "13383:3:23"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "13388:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13376:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13376:19:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13376:19:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "13430:5:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13437:4:23",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13426:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13426:16:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "13448:3:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13453:4:23",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13444:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13444:14:23"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "13460:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "13404:21:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13404:63:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13404:63:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13476:57:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "13491:3:23"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "name": "length",
                                    "nodeType": "YulIdentifier",
                                    "src": "13504:6:23"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13512:2:23",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "add",
                                  "nodeType": "YulIdentifier",
                                  "src": "13500:3:23"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13500:15:23"
                              },
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "13521:2:23",
                                    "type": "",
                                    "value": "31"
                                  }
                                ],
                                "functionName": {
                                  "name": "not",
                                  "nodeType": "YulIdentifier",
                                  "src": "13517:3:23"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "13517:7:23"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "13496:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "13496:29:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13487:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13487:39:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "13528:4:23",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "13483:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13483:50:23"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "13476:3:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_bytes",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "13308:5:23",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "13315:3:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "13323:3:23",
                "type": ""
              }
            ],
            "src": "13282:257:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13587:51:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "13604:3:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "13613:5:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13620:10:23",
                            "type": "",
                            "value": "0xffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "13609:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13609:22:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "13597:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13597:35:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13597:35:23"
                }
              ]
            },
            "name": "abi_encode_uint32",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "13571:5:23",
                "type": ""
              },
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "13578:3:23",
                "type": ""
              }
            ],
            "src": "13544:94:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "13782:137:23",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "13792:27:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "13812:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "13806:5:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13806:13:23"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "13796:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "13854:6:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "13862:4:23",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "13850:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "13850:17:23"
                      },
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "13869:3:23"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "13874:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "copy_memory_to_memory",
                      "nodeType": "YulIdentifier",
                      "src": "13828:21:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13828:53:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "13828:53:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "13890:23:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "13901:3:23"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "13906:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "13897:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "13897:16:23"
                  },
                  "variableNames": [
                    {
                      "name": "end",
                      "nodeType": "YulIdentifier",
                      "src": "13890:3:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "13758:3:23",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "13763:6:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "end",
                "nodeType": "YulTypedName",
                "src": "13774:3:23",
                "type": ""
              }
            ],
            "src": "13643:276:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14025:102:23",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "14035:26:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14047:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14058:2:23",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "14043:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14043:18:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "14035:4:23"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14077:9:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "14092:6:23"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14108:3:23",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14113:1:23",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "14104:3:23"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14104:11:23"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14117:1:23",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "14100:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14100:19:23"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "14088:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14088:32:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14070:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14070:51:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14070:51:23"
                }
              ]
            },
            "name": "abi_encode_tuple_t_address__to_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "13994:9:23",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "14005:6:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "14016:4:23",
                "type": ""
              }
            ],
            "src": "13924:203:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "14403:441:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "14420:9:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "14435:6:23"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14451:3:23",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "14456:1:23",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "14447:3:23"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "14447:11:23"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "14460:1:23",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "14443:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "14443:19:23"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "14431:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14431:32:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14413:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14413:51:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14413:51:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14484:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14495:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14480:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14480:18:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "14500:3:23",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14473:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14473:31:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14473:31:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14513:59:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "14544:6:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14556:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14567:3:23",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14552:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14552:19:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "14527:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14527:45:23"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "14517:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14592:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14603:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14588:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14588:18:23"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "14608:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14581:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14581:34:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14581:34:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14635:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14646:2:23",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14631:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14631:18:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "14655:6:23"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14663:9:23"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "14651:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14651:22:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14624:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14624:50:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14624:50:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "14683:46:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "14714:6:23"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "14722:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "14697:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14697:32:23"
                  },
                  "variables": [
                    {
                      "name": "tail_2",
                      "nodeType": "YulTypedName",
                      "src": "14687:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14749:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "14760:3:23",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "14745:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14745:19:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_2",
                            "nodeType": "YulIdentifier",
                            "src": "14770:6:23"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "14778:9:23"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "14766:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "14766:22:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "14738:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14738:51:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "14738:51:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "14798:40:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "value4",
                        "nodeType": "YulIdentifier",
                        "src": "14823:6:23"
                      },
                      {
                        "name": "tail_2",
                        "nodeType": "YulIdentifier",
                        "src": "14831:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "14806:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "14806:32:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "14798:4:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_bytes_memory_ptr_t_uint256_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_bytes_memory_ptr_t_uint256_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "14340:9:23",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "14351:6:23",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "14359:6:23",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "14367:6:23",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "14375:6:23",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "14383:6:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "14394:4:23",
                "type": ""
              }
            ],
            "src": "14132:712:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "15169:1505:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "15186:9:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "15201:6:23"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15217:3:23",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "15222:1:23",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "15213:3:23"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "15213:11:23"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "15226:1:23",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "15209:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "15209:19:23"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "15197:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15197:32:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15179:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15179:51:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15179:51:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15250:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15261:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15246:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15246:18:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15266:3:23",
                        "type": "",
                        "value": "224"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "15239:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15239:31:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "15239:31:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15279:15:23",
                  "value": {
                    "name": "tail",
                    "nodeType": "YulIdentifier",
                    "src": "15290:4:23"
                  },
                  "variables": [
                    {
                      "name": "ret",
                      "nodeType": "YulTypedName",
                      "src": "15283:3:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15303:30:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "15326:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "sload",
                      "nodeType": "YulIdentifier",
                      "src": "15320:5:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15320:13:23"
                  },
                  "variables": [
                    {
                      "name": "slotValue",
                      "nodeType": "YulTypedName",
                      "src": "15307:9:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15342:18:23",
                  "value": {
                    "name": "tail",
                    "nodeType": "YulIdentifier",
                    "src": "15356:4:23"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "15346:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15369:11:23",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "15379:1:23",
                    "type": "",
                    "value": "1"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "15373:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "15389:28:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "15403:2:23"
                      },
                      {
                        "name": "slotValue",
                        "nodeType": "YulIdentifier",
                        "src": "15407:9:23"
                      }
                    ],
                    "functionName": {
                      "name": "shr",
                      "nodeType": "YulIdentifier",
                      "src": "15399:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15399:18:23"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "15389:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15426:44:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "slotValue",
                        "nodeType": "YulIdentifier",
                        "src": "15456:9:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "15467:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "15452:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15452:18:23"
                  },
                  "variables": [
                    {
                      "name": "outOfPlaceEncoding",
                      "nodeType": "YulTypedName",
                      "src": "15430:18:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "15509:31:23",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "15511:27:23",
                        "value": {
                          "arguments": [
                            {
                              "name": "length",
                              "nodeType": "YulIdentifier",
                              "src": "15525:6:23"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "15533:4:23",
                              "type": "",
                              "value": "0x7f"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nodeType": "YulIdentifier",
                            "src": "15521:3:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "15521:17:23"
                        },
                        "variableNames": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "15511:6:23"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "15489:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "15482:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15482:26:23"
                  },
                  "nodeType": "YulIf",
                  "src": "15479:2:23"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "15599:117:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "tail",
                              "nodeType": "YulIdentifier",
                              "src": "15620:4:23"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "15630:3:23",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "15635:10:23",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "15626:3:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "15626:20:23"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "15613:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "15613:34:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "15613:34:23"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "15667:1:23",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "15670:4:23",
                              "type": "",
                              "value": "0x22"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "15660:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "15660:15:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "15660:15:23"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "tail",
                              "nodeType": "YulIdentifier",
                              "src": "15695:4:23"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "15701:4:23",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "15688:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "15688:18:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "15688:18:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "15555:18:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "15578:6:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15586:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "15575:2:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15575:14:23"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "15552:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15552:38:23"
                  },
                  "nodeType": "YulIf",
                  "src": "15549:2:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "15725:104:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "15805:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "15816:3:23",
                            "type": "",
                            "value": "224"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "15801:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "15801:19:23"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "15822:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "array_storeLengthForEncoding_array_struct_CredentialMetadata_dyn",
                      "nodeType": "YulIdentifier",
                      "src": "15736:64:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "15736:93:23"
                  },
                  "variables": [
                    {
                      "name": "pos",
                      "nodeType": "YulTypedName",
                      "src": "15729:3:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "cases": [
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "15879:93:23",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "15900:3:23"
                                },
                                {
                                  "arguments": [
                                    {
                                      "name": "slotValue",
                                      "nodeType": "YulIdentifier",
                                      "src": "15909:9:23"
                                    },
                                    {
                                      "arguments": [
                                        {
                                          "kind": "number",
                                          "nodeType": "YulLiteral",
                                          "src": "15924:3:23",
                                          "type": "",
                                          "value": "255"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "not",
                                        "nodeType": "YulIdentifier",
                                        "src": "15920:3:23"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "15920:8:23"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "and",
                                    "nodeType": "YulIdentifier",
                                    "src": "15905:3:23"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "15905:24:23"
                                }
                              ],
                              "functionName": {
                                "name": "mstore",
                                "nodeType": "YulIdentifier",
                                "src": "15893:6:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "15893:37:23"
                            },
                            "nodeType": "YulExpressionStatement",
                            "src": "15893:37:23"
                          },
                          {
                            "nodeType": "YulAssignment",
                            "src": "15943:19:23",
                            "value": {
                              "arguments": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "15954:3:23"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "15959:2:23",
                                  "type": "",
                                  "value": "32"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "15950:3:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "15950:12:23"
                            },
                            "variableNames": [
                              {
                                "name": "ret",
                                "nodeType": "YulIdentifier",
                                "src": "15943:3:23"
                              }
                            ]
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "15872:100:23",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15877:1:23",
                        "type": "",
                        "value": "0"
                      }
                    },
                    {
                      "body": {
                        "nodeType": "YulBlock",
                        "src": "15988:310:23",
                        "statements": [
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "16002:51:23",
                            "value": {
                              "arguments": [
                                {
                                  "name": "value1",
                                  "nodeType": "YulIdentifier",
                                  "src": "16046:6:23"
                                }
                              ],
                              "functionName": {
                                "name": "array_dataslot_bytes_storage",
                                "nodeType": "YulIdentifier",
                                "src": "16017:28:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "16017:36:23"
                            },
                            "variables": [
                              {
                                "name": "dataPos",
                                "nodeType": "YulTypedName",
                                "src": "16006:7:23",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "nodeType": "YulVariableDeclaration",
                            "src": "16066:13:23",
                            "value": {
                              "name": "tail",
                              "nodeType": "YulIdentifier",
                              "src": "16075:4:23"
                            },
                            "variables": [
                              {
                                "name": "i",
                                "nodeType": "YulTypedName",
                                "src": "16070:1:23",
                                "type": ""
                              }
                            ]
                          },
                          {
                            "body": {
                              "nodeType": "YulBlock",
                              "src": "16146:111:23",
                              "statements": [
                                {
                                  "expression": {
                                    "arguments": [
                                      {
                                        "arguments": [
                                          {
                                            "name": "pos",
                                            "nodeType": "YulIdentifier",
                                            "src": "16175:3:23"
                                          },
                                          {
                                            "name": "i",
                                            "nodeType": "YulIdentifier",
                                            "src": "16180:1:23"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "16171:3:23"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "16171:11:23"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "dataPos",
                                            "nodeType": "YulIdentifier",
                                            "src": "16190:7:23"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "sload",
                                          "nodeType": "YulIdentifier",
                                          "src": "16184:5:23"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "16184:14:23"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "mstore",
                                      "nodeType": "YulIdentifier",
                                      "src": "16164:6:23"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16164:35:23"
                                  },
                                  "nodeType": "YulExpressionStatement",
                                  "src": "16164:35:23"
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "16216:27:23",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "dataPos",
                                        "nodeType": "YulIdentifier",
                                        "src": "16231:7:23"
                                      },
                                      {
                                        "name": "_1",
                                        "nodeType": "YulIdentifier",
                                        "src": "16240:2:23"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16227:3:23"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16227:16:23"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "dataPos",
                                      "nodeType": "YulIdentifier",
                                      "src": "16216:7:23"
                                    }
                                  ]
                                }
                              ]
                            },
                            "condition": {
                              "arguments": [
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "16103:1:23"
                                },
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "16106:6:23"
                                }
                              ],
                              "functionName": {
                                "name": "lt",
                                "nodeType": "YulIdentifier",
                                "src": "16100:2:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "16100:13:23"
                            },
                            "nodeType": "YulForLoop",
                            "post": {
                              "nodeType": "YulBlock",
                              "src": "16114:19:23",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "16116:15:23",
                                  "value": {
                                    "arguments": [
                                      {
                                        "name": "i",
                                        "nodeType": "YulIdentifier",
                                        "src": "16125:1:23"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "16128:2:23",
                                        "type": "",
                                        "value": "32"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "add",
                                      "nodeType": "YulIdentifier",
                                      "src": "16121:3:23"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "16121:10:23"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "16116:1:23"
                                    }
                                  ]
                                }
                              ]
                            },
                            "pre": {
                              "nodeType": "YulBlock",
                              "src": "16096:3:23",
                              "statements": []
                            },
                            "src": "16092:165:23"
                          },
                          {
                            "nodeType": "YulAssignment",
                            "src": "16270:18:23",
                            "value": {
                              "arguments": [
                                {
                                  "name": "pos",
                                  "nodeType": "YulIdentifier",
                                  "src": "16281:3:23"
                                },
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "16286:1:23"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "16277:3:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "16277:11:23"
                            },
                            "variableNames": [
                              {
                                "name": "ret",
                                "nodeType": "YulIdentifier",
                                "src": "16270:3:23"
                              }
                            ]
                          }
                        ]
                      },
                      "nodeType": "YulCase",
                      "src": "15981:317:23",
                      "value": {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "15986:1:23",
                        "type": "",
                        "value": "1"
                      }
                    }
                  ],
                  "expression": {
                    "name": "outOfPlaceEncoding",
                    "nodeType": "YulIdentifier",
                    "src": "15845:18:23"
                  },
                  "nodeType": "YulSwitch",
                  "src": "15838:460:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16318:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16329:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16314:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16314:18:23"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "16334:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16307:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16307:34:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16307:34:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "16368:6:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16380:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16391:2:23",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16376:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16376:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes2",
                      "nodeType": "YulIdentifier",
                      "src": "16350:17:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16350:45:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16350:45:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "value4",
                        "nodeType": "YulIdentifier",
                        "src": "16422:6:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16434:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16445:3:23",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16430:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16430:19:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_uint32",
                      "nodeType": "YulIdentifier",
                      "src": "16404:17:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16404:46:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16404:46:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16470:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16481:3:23",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16466:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16466:19:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "ret",
                            "nodeType": "YulIdentifier",
                            "src": "16491:3:23"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16496:9:23"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "16487:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16487:19:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16459:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16459:48:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16459:48:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "16516:43:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "value5",
                        "nodeType": "YulIdentifier",
                        "src": "16547:6:23"
                      },
                      {
                        "name": "ret",
                        "nodeType": "YulIdentifier",
                        "src": "16555:3:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "16530:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16530:29:23"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "16520:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16579:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16590:3:23",
                            "type": "",
                            "value": "192"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16575:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16575:19:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "16600:6:23"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16608:9:23"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "16596:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16596:22:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16568:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16568:51:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16568:51:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "16628:40:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "value6",
                        "nodeType": "YulIdentifier",
                        "src": "16653:6:23"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "16661:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "16636:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16636:32:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "16628:4:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_bytes_storage_t_uint256_t_bytes2_t_uint32_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_bytes_memory_ptr_t_uint256_t_bytes2_t_uint32_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "15090:9:23",
                "type": ""
              },
              {
                "name": "value6",
                "nodeType": "YulTypedName",
                "src": "15101:6:23",
                "type": ""
              },
              {
                "name": "value5",
                "nodeType": "YulTypedName",
                "src": "15109:6:23",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "15117:6:23",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "15125:6:23",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "15133:6:23",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "15141:6:23",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "15149:6:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "15160:4:23",
                "type": ""
              }
            ],
            "src": "14849:1825:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "16828:167:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "16845:9:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "16860:6:23"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16876:3:23",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "16881:1:23",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "16872:3:23"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "16872:11:23"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "16885:1:23",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "16868:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "16868:19:23"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "16856:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16856:32:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16838:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16838:51:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16838:51:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16909:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16920:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16905:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16905:18:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "16925:2:23",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "16898:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16898:30:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "16898:30:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "16937:52:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "16962:6:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "16974:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "16985:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "16970:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "16970:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "16945:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "16945:44:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "16937:4:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_address_t_string_memory_ptr__to_t_address_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "16789:9:23",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "16800:6:23",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "16808:6:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "16819:4:23",
                "type": ""
              }
            ],
            "src": "16679:316:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "17223:1263:23",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17233:12:23",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "17243:2:23",
                    "type": "",
                    "value": "32"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "17237:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17254:32:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17272:9:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "17283:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "17268:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17268:18:23"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "17258:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17302:9:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "17313:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17295:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17295:21:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17295:21:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17325:17:23",
                  "value": {
                    "name": "tail_1",
                    "nodeType": "YulIdentifier",
                    "src": "17336:6:23"
                  },
                  "variables": [
                    {
                      "name": "pos",
                      "nodeType": "YulTypedName",
                      "src": "17329:3:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17351:27:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "17371:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "17365:5:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17365:13:23"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "17355:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "17394:6:23"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "17402:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "17387:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17387:22:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "17387:22:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17418:12:23",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "17428:2:23",
                    "type": "",
                    "value": "64"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "17422:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "17439:25:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "17450:9:23"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "17461:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "17446:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17446:18:23"
                  },
                  "variableNames": [
                    {
                      "name": "pos",
                      "nodeType": "YulIdentifier",
                      "src": "17439:3:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17473:53:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "17495:9:23"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "17510:1:23",
                                "type": "",
                                "value": "5"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "17513:6:23"
                              }
                            ],
                            "functionName": {
                              "name": "shl",
                              "nodeType": "YulIdentifier",
                              "src": "17506:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "17506:14:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "17491:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "17491:30:23"
                      },
                      {
                        "name": "_2",
                        "nodeType": "YulIdentifier",
                        "src": "17523:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "17487:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17487:39:23"
                  },
                  "variables": [
                    {
                      "name": "tail_2",
                      "nodeType": "YulTypedName",
                      "src": "17477:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17535:29:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "17553:6:23"
                      },
                      {
                        "name": "_1",
                        "nodeType": "YulIdentifier",
                        "src": "17561:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "17549:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17549:15:23"
                  },
                  "variables": [
                    {
                      "name": "srcPtr",
                      "nodeType": "YulTypedName",
                      "src": "17539:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "17573:13:23",
                  "value": {
                    "name": "tail",
                    "nodeType": "YulIdentifier",
                    "src": "17582:4:23"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "17577:1:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "17644:813:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "17665:3:23"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "tail_2",
                                      "nodeType": "YulIdentifier",
                                      "src": "17678:6:23"
                                    },
                                    {
                                      "name": "headStart",
                                      "nodeType": "YulIdentifier",
                                      "src": "17686:9:23"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "sub",
                                    "nodeType": "YulIdentifier",
                                    "src": "17674:3:23"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "17674:22:23"
                                },
                                {
                                  "arguments": [
                                    {
                                      "kind": "number",
                                      "nodeType": "YulLiteral",
                                      "src": "17702:2:23",
                                      "type": "",
                                      "value": "63"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "not",
                                    "nodeType": "YulIdentifier",
                                    "src": "17698:3:23"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "17698:7:23"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "17670:3:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "17670:36:23"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "17658:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17658:49:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "17658:49:23"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "17720:23:23",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "17736:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "17730:5:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17730:13:23"
                        },
                        "variables": [
                          {
                            "name": "_3",
                            "nodeType": "YulTypedName",
                            "src": "17724:2:23",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "17756:14:23",
                        "value": {
                          "kind": "number",
                          "nodeType": "YulLiteral",
                          "src": "17766:4:23",
                          "type": "",
                          "value": "0xa0"
                        },
                        "variables": [
                          {
                            "name": "_4",
                            "nodeType": "YulTypedName",
                            "src": "17760:2:23",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "17783:25:23",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "17797:3:23",
                              "type": "",
                              "value": "240"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "17802:5:23",
                              "type": "",
                              "value": "65535"
                            }
                          ],
                          "functionName": {
                            "name": "shl",
                            "nodeType": "YulIdentifier",
                            "src": "17793:3:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17793:15:23"
                        },
                        "variables": [
                          {
                            "name": "_5",
                            "nodeType": "YulTypedName",
                            "src": "17787:2:23",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "tail_2",
                              "nodeType": "YulIdentifier",
                              "src": "17828:6:23"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "_3",
                                      "nodeType": "YulIdentifier",
                                      "src": "17846:2:23"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "mload",
                                    "nodeType": "YulIdentifier",
                                    "src": "17840:5:23"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "17840:9:23"
                                },
                                {
                                  "name": "_5",
                                  "nodeType": "YulIdentifier",
                                  "src": "17851:2:23"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "17836:3:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "17836:18:23"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "17821:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17821:34:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "17821:34:23"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulIdentifier",
                                  "src": "17879:6:23"
                                },
                                {
                                  "name": "_1",
                                  "nodeType": "YulIdentifier",
                                  "src": "17887:2:23"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "17875:3:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "17875:15:23"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "17906:2:23"
                                        },
                                        {
                                          "name": "_1",
                                          "nodeType": "YulIdentifier",
                                          "src": "17910:2:23"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "17902:3:23"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17902:11:23"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "mload",
                                    "nodeType": "YulIdentifier",
                                    "src": "17896:5:23"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "17896:18:23"
                                },
                                {
                                  "name": "_5",
                                  "nodeType": "YulIdentifier",
                                  "src": "17916:2:23"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "17892:3:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "17892:27:23"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "17868:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17868:52:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "17868:52:23"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulIdentifier",
                                  "src": "17944:6:23"
                                },
                                {
                                  "name": "_2",
                                  "nodeType": "YulIdentifier",
                                  "src": "17952:2:23"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "17940:3:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "17940:15:23"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "arguments": [
                                        {
                                          "name": "_3",
                                          "nodeType": "YulIdentifier",
                                          "src": "17971:2:23"
                                        },
                                        {
                                          "name": "_2",
                                          "nodeType": "YulIdentifier",
                                          "src": "17975:2:23"
                                        }
                                      ],
                                      "functionName": {
                                        "name": "add",
                                        "nodeType": "YulIdentifier",
                                        "src": "17967:3:23"
                                      },
                                      "nodeType": "YulFunctionCall",
                                      "src": "17967:11:23"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "mload",
                                    "nodeType": "YulIdentifier",
                                    "src": "17961:5:23"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "17961:18:23"
                                },
                                {
                                  "name": "_5",
                                  "nodeType": "YulIdentifier",
                                  "src": "17981:2:23"
                                }
                              ],
                              "functionName": {
                                "name": "and",
                                "nodeType": "YulIdentifier",
                                "src": "17957:3:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "17957:27:23"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "17933:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17933:52:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "17933:52:23"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "17998:14:23",
                        "value": {
                          "kind": "number",
                          "nodeType": "YulLiteral",
                          "src": "18008:4:23",
                          "type": "",
                          "value": "0x60"
                        },
                        "variables": [
                          {
                            "name": "_6",
                            "nodeType": "YulTypedName",
                            "src": "18002:2:23",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "18025:38:23",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulIdentifier",
                                  "src": "18055:2:23"
                                },
                                {
                                  "name": "_6",
                                  "nodeType": "YulIdentifier",
                                  "src": "18059:2:23"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "18051:3:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "18051:11:23"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "18045:5:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "18045:18:23"
                        },
                        "variables": [
                          {
                            "name": "memberValue0",
                            "nodeType": "YulTypedName",
                            "src": "18029:12:23",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulIdentifier",
                                  "src": "18087:6:23"
                                },
                                {
                                  "name": "_6",
                                  "nodeType": "YulIdentifier",
                                  "src": "18095:2:23"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "18083:3:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "18083:15:23"
                            },
                            {
                              "name": "_4",
                              "nodeType": "YulIdentifier",
                              "src": "18100:2:23"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "18076:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "18076:27:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "18076:27:23"
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "18116:61:23",
                        "value": {
                          "arguments": [
                            {
                              "name": "memberValue0",
                              "nodeType": "YulIdentifier",
                              "src": "18147:12:23"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulIdentifier",
                                  "src": "18165:6:23"
                                },
                                {
                                  "name": "_4",
                                  "nodeType": "YulIdentifier",
                                  "src": "18173:2:23"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "18161:3:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "18161:15:23"
                            }
                          ],
                          "functionName": {
                            "name": "abi_encode_bytes",
                            "nodeType": "YulIdentifier",
                            "src": "18130:16:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "18130:47:23"
                        },
                        "variables": [
                          {
                            "name": "tail_3",
                            "nodeType": "YulTypedName",
                            "src": "18120:6:23",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "18190:14:23",
                        "value": {
                          "kind": "number",
                          "nodeType": "YulLiteral",
                          "src": "18200:4:23",
                          "type": "",
                          "value": "0x80"
                        },
                        "variables": [
                          {
                            "name": "_7",
                            "nodeType": "YulTypedName",
                            "src": "18194:2:23",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "nodeType": "YulVariableDeclaration",
                        "src": "18217:40:23",
                        "value": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "_3",
                                  "nodeType": "YulIdentifier",
                                  "src": "18249:2:23"
                                },
                                {
                                  "name": "_7",
                                  "nodeType": "YulIdentifier",
                                  "src": "18253:2:23"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "18245:3:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "18245:11:23"
                            }
                          ],
                          "functionName": {
                            "name": "mload",
                            "nodeType": "YulIdentifier",
                            "src": "18239:5:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "18239:18:23"
                        },
                        "variables": [
                          {
                            "name": "memberValue0_1",
                            "nodeType": "YulTypedName",
                            "src": "18221:14:23",
                            "type": ""
                          }
                        ]
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulIdentifier",
                                  "src": "18281:6:23"
                                },
                                {
                                  "name": "_7",
                                  "nodeType": "YulIdentifier",
                                  "src": "18289:2:23"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "18277:3:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "18277:15:23"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "tail_3",
                                  "nodeType": "YulIdentifier",
                                  "src": "18298:6:23"
                                },
                                {
                                  "name": "tail_2",
                                  "nodeType": "YulIdentifier",
                                  "src": "18306:6:23"
                                }
                              ],
                              "functionName": {
                                "name": "sub",
                                "nodeType": "YulIdentifier",
                                "src": "18294:3:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "18294:19:23"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "18270:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "18270:44:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "18270:44:23"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "18327:50:23",
                        "value": {
                          "arguments": [
                            {
                              "name": "memberValue0_1",
                              "nodeType": "YulIdentifier",
                              "src": "18354:14:23"
                            },
                            {
                              "name": "tail_3",
                              "nodeType": "YulIdentifier",
                              "src": "18370:6:23"
                            }
                          ],
                          "functionName": {
                            "name": "abi_encode_bytes",
                            "nodeType": "YulIdentifier",
                            "src": "18337:16:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "18337:40:23"
                        },
                        "variableNames": [
                          {
                            "name": "tail_2",
                            "nodeType": "YulIdentifier",
                            "src": "18327:6:23"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "18390:25:23",
                        "value": {
                          "arguments": [
                            {
                              "name": "srcPtr",
                              "nodeType": "YulIdentifier",
                              "src": "18404:6:23"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "18412:2:23"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "18400:3:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "18400:15:23"
                        },
                        "variableNames": [
                          {
                            "name": "srcPtr",
                            "nodeType": "YulIdentifier",
                            "src": "18390:6:23"
                          }
                        ]
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "18428:19:23",
                        "value": {
                          "arguments": [
                            {
                              "name": "pos",
                              "nodeType": "YulIdentifier",
                              "src": "18439:3:23"
                            },
                            {
                              "name": "_1",
                              "nodeType": "YulIdentifier",
                              "src": "18444:2:23"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "18435:3:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "18435:12:23"
                        },
                        "variableNames": [
                          {
                            "name": "pos",
                            "nodeType": "YulIdentifier",
                            "src": "18428:3:23"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "17606:1:23"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "17609:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "17603:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "17603:13:23"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "17617:18:23",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "17619:14:23",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "17628:1:23"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "17631:1:23",
                              "type": "",
                              "value": "1"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "17624:3:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "17624:9:23"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "17619:1:23"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "17599:3:23",
                    "statements": []
                  },
                  "src": "17595:862:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "18466:14:23",
                  "value": {
                    "name": "tail_2",
                    "nodeType": "YulIdentifier",
                    "src": "18474:6:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "18466:4:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "17192:9:23",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "17203:6:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "17214:4:23",
                "type": ""
              }
            ],
            "src": "17000:1486:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "18586:92:23",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "18596:26:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18608:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18619:2:23",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "18604:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18604:18:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "18596:4:23"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18638:9:23"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value0",
                                "nodeType": "YulIdentifier",
                                "src": "18663:6:23"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "18656:6:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "18656:14:23"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "18649:6:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18649:22:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18631:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18631:41:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18631:41:23"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "18555:9:23",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "18566:6:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "18577:4:23",
                "type": ""
              }
            ],
            "src": "18491:187:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "18876:297:23",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "18886:25:23",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18900:3:23",
                        "type": "",
                        "value": "240"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "18905:5:23",
                        "type": "",
                        "value": "65535"
                      }
                    ],
                    "functionName": {
                      "name": "shl",
                      "nodeType": "YulIdentifier",
                      "src": "18896:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18896:15:23"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "18890:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "18927:9:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "18942:6:23"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "18950:2:23"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "18938:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18938:15:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18920:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18920:34:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18920:34:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "18974:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "18985:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "18970:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18970:18:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "18994:6:23"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "19002:2:23"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "18990:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "18990:15:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "18963:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "18963:43:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "18963:43:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19026:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19037:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19022:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19022:18:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19042:3:23",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19015:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19015:31:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19015:31:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "19055:53:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "19080:6:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19092:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19103:3:23",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19088:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19088:19:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "19063:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19063:45:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "19055:4:23"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19128:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19139:2:23",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19124:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19124:18:23"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "value3",
                                "nodeType": "YulIdentifier",
                                "src": "19158:6:23"
                              }
                            ],
                            "functionName": {
                              "name": "iszero",
                              "nodeType": "YulIdentifier",
                              "src": "19151:6:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "19151:14:23"
                          }
                        ],
                        "functionName": {
                          "name": "iszero",
                          "nodeType": "YulIdentifier",
                          "src": "19144:6:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19144:22:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19117:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19117:50:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19117:50:23"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes2_t_bytes2_t_bytes_memory_ptr_t_bool__to_t_bytes2_t_bytes2_t_bytes_memory_ptr_t_bool__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "18821:9:23",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "18832:6:23",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "18840:6:23",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "18848:6:23",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "18856:6:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "18867:4:23",
                "type": ""
              }
            ],
            "src": "18683:490:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19359:217:23",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "19369:27:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19381:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19392:3:23",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "19377:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19377:19:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "19369:4:23"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19412:9:23"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "19423:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19405:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19405:25:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19405:25:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19450:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19461:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19446:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19446:18:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value1",
                            "nodeType": "YulIdentifier",
                            "src": "19470:6:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19478:4:23",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "19466:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19466:17:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19439:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19439:45:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19439:45:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19504:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19515:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19500:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19500:18:23"
                      },
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "19520:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19493:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19493:34:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19493:34:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19547:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19558:2:23",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19543:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19543:18:23"
                      },
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "19563:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19536:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19536:34:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19536:34:23"
                }
              ]
            },
            "name": "abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "19304:9:23",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "19315:6:23",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "19323:6:23",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "19331:6:23",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "19339:6:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "19350:4:23",
                "type": ""
              }
            ],
            "src": "19178:398:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19688:87:23",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "19698:26:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19710:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19721:2:23",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "19706:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19706:18:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "19698:4:23"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19740:9:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value0",
                            "nodeType": "YulIdentifier",
                            "src": "19755:6:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19763:4:23",
                            "type": "",
                            "value": "0xff"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "19751:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19751:17:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19733:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19733:36:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19733:36:23"
                }
              ]
            },
            "name": "abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "19657:9:23",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "19668:6:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "19679:4:23",
                "type": ""
              }
            ],
            "src": "19581:194:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "19901:98:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "19918:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "19929:2:23",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "19911:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19911:21:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "19911:21:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "19941:52:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "19966:6:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "19978:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "19989:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "19974:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "19974:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "19949:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "19949:44:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "19941:4:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "19870:9:23",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "19881:6:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "19892:4:23",
                "type": ""
              }
            ],
            "src": "19780:219:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "20178:180:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20195:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20206:2:23",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20188:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20188:21:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20188:21:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20229:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20240:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20225:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20225:18:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20245:2:23",
                        "type": "",
                        "value": "30"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20218:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20218:30:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20218:30:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20268:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20279:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20264:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20264:18:23"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "20284:32:23",
                        "type": "",
                        "value": "Permissions: caller is not VNF"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20257:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20257:60:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20257:60:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "20326:26:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20338:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20349:2:23",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "20334:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20334:18:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "20326:4:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_1742f33f239814f4f24d27ea94d36db4ee95bbdd15300a47d6f32b5fb11a5ad8__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "20155:9:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "20169:4:23",
                "type": ""
              }
            ],
            "src": "20004:354:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "20537:163:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20554:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20565:2:23",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20547:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20547:21:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20547:21:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20588:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20599:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20584:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20584:18:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20604:2:23",
                        "type": "",
                        "value": "13"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20577:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20577:30:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20577:30:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20627:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20638:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20623:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20623:18:23"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "20643:15:23",
                        "type": "",
                        "value": "Invalid index"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20616:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20616:43:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20616:43:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "20668:26:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20680:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20691:2:23",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "20676:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20676:18:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "20668:4:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_32cc480c4f0e15e5ce7060ec5e004886ed5a15831cba1ff1aa7cb787be55bb60__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "20514:9:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "20528:4:23",
                "type": ""
              }
            ],
            "src": "20363:337:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "20879:243:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "20896:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20907:2:23",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20889:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20889:21:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20889:21:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20930:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20941:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20926:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20926:18:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "20946:2:23",
                        "type": "",
                        "value": "53"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20919:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20919:30:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20919:30:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "20969:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "20980:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "20965:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "20965:18:23"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "20985:34:23",
                        "type": "",
                        "value": "Only free creadential types is a"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "20958:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "20958:62:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "20958:62:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21040:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21051:2:23",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21036:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21036:18:23"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "21056:23:23",
                        "type": "",
                        "value": "llowed without coupon"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21029:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21029:51:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21029:51:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "21089:27:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "21101:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21112:3:23",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "21097:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21097:19:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "21089:4:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_38f9caf05bedd63059484a2336fad9725a700df02b1ed12a2feaa2e7557f5a96__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "20856:9:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "20870:4:23",
                "type": ""
              }
            ],
            "src": "20705:417:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21301:171:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "21318:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21329:2:23",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21311:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21311:21:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21311:21:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21352:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21363:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21348:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21348:18:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21368:2:23",
                        "type": "",
                        "value": "21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21341:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21341:30:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21341:30:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21391:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21402:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21387:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21387:18:23"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "21407:23:23",
                        "type": "",
                        "value": "List Id not aveliable"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21380:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21380:51:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21380:51:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "21440:26:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "21452:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21463:2:23",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "21448:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21448:18:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "21440:4:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_41b8b6374a309ddf81ce65f2d06dc359c5aae9c1bcc0f9806cf2a6245f4d39e4__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "21278:9:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "21292:4:23",
                "type": ""
              }
            ],
            "src": "21127:345:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21651:166:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "21668:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21679:2:23",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21661:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21661:21:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21661:21:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21702:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21713:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21698:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21698:18:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21718:2:23",
                        "type": "",
                        "value": "16"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21691:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21691:30:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21691:30:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "21741:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "21752:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "21737:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "21737:18:23"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "21757:18:23",
                        "type": "",
                        "value": "List id not used"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "21730:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21730:46:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "21730:46:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "21785:26:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "21797:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "21808:2:23",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "21793:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "21793:18:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "21785:4:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_6fa0b2c1699635dde7e841a535d59942efd59d076beaa50d6f68606bcaf3d16c__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "21628:9:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "21642:4:23",
                "type": ""
              }
            ],
            "src": "21477:340:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "21996:236:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "22013:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22024:2:23",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22006:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22006:21:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22006:21:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22047:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22058:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22043:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22043:18:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22063:2:23",
                        "type": "",
                        "value": "46"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22036:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22036:30:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22036:30:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22086:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22097:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22082:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22082:18:23"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "22102:34:23",
                        "type": "",
                        "value": "Initializable: contract is alrea"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22075:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22075:62:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22075:62:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22157:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22168:2:23",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22153:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22153:18:23"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "22173:16:23",
                        "type": "",
                        "value": "dy initialized"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22146:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22146:44:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22146:44:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "22199:27:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "22211:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22222:3:23",
                        "type": "",
                        "value": "128"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "22207:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22207:19:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "22199:4:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "21973:9:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "21987:4:23",
                "type": ""
              }
            ],
            "src": "21822:410:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "22411:175:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "22428:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22439:2:23",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22421:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22421:21:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22421:21:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22462:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22473:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22458:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22458:18:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22478:2:23",
                        "type": "",
                        "value": "25"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22451:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22451:30:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22451:30:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22501:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22512:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22497:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22497:18:23"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "22517:27:23",
                        "type": "",
                        "value": "No paid creadential types"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22490:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22490:55:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22490:55:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "22554:26:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "22566:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22577:2:23",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "22562:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22562:18:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "22554:4:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_83c0982fcda1b18a6920fc2c8458652fed1771abb009fc4d894e970aefcd7bfd__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "22388:9:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "22402:4:23",
                "type": ""
              }
            ],
            "src": "22237:349:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "22765:171:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "22782:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22793:2:23",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22775:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22775:21:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22775:21:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22816:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22827:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22812:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22812:18:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22832:2:23",
                        "type": "",
                        "value": "21"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22805:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22805:30:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22805:30:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "22855:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "22866:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "22851:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "22851:18:23"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "22871:23:23",
                        "type": "",
                        "value": "The caller is not VNF"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "22844:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22844:51:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "22844:51:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "22904:26:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "22916:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "22927:2:23",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "22912:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "22912:18:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "22904:4:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_ac07a71f12c270c07ea84bb01e6423293637c251609564d208901a72bdb04be8__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "22742:9:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "22756:4:23",
                "type": ""
              }
            ],
            "src": "22591:345:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23115:170:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23132:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23143:2:23",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23125:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23125:21:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23125:21:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23166:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23177:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23162:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23162:18:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23182:2:23",
                        "type": "",
                        "value": "20"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23155:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23155:30:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23155:30:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23205:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23216:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23201:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23201:18:23"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "23221:22:23",
                        "type": "",
                        "value": "List id already used"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23194:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23194:50:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23194:50:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "23253:26:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23265:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23276:2:23",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "23261:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23261:18:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "23253:4:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_c57c76870af50170e56f334aa7d668c01e0f778a9ec2a72d64e4626ef1552d53__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "23092:9:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "23106:4:23",
                "type": ""
              }
            ],
            "src": "22941:344:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23464:164:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23481:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23492:2:23",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23474:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23474:21:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23474:21:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23515:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23526:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23511:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23511:18:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23531:2:23",
                        "type": "",
                        "value": "14"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23504:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23504:30:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23504:30:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23554:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23565:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23550:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23550:18:23"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "23570:16:23",
                        "type": "",
                        "value": "Index not used"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23543:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23543:44:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23543:44:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "23596:26:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23608:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23619:2:23",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "23604:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23604:18:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "23596:4:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_d4eeb7b9737a35467cf971936b92fcf69bb10ccb8683e841e08d9bef44aef8e0__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "23441:9:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "23455:4:23",
                "type": ""
              }
            ],
            "src": "23290:338:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "23807:168:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23824:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23835:2:23",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23817:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23817:21:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23817:21:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23858:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23869:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23854:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23854:18:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23874:2:23",
                        "type": "",
                        "value": "18"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23847:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23847:30:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23847:30:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "23897:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "23908:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "23893:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "23893:18:23"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "23913:20:23",
                        "type": "",
                        "value": "Index already used"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "23886:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23886:48:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "23886:48:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "23943:26:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "23955:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "23966:2:23",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "23951:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "23951:18:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "23943:4:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_ddf5de362b31a0f65f67c58bfa9515cbad454ca52b26577ff3fd46947e49aaf3__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "23784:9:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "23798:4:23",
                "type": ""
              }
            ],
            "src": "23633:342:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "24154:174:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "24171:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24182:2:23",
                        "type": "",
                        "value": "32"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24164:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24164:21:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24164:21:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24205:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24216:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24201:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24201:18:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24221:2:23",
                        "type": "",
                        "value": "24"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24194:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24194:30:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24194:30:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24244:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24255:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24240:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24240:18:23"
                      },
                      {
                        "kind": "string",
                        "nodeType": "YulLiteral",
                        "src": "24260:26:23",
                        "type": "",
                        "value": "invalid signature length"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24233:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24233:54:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24233:54:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "24296:26:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "24308:9:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24319:2:23",
                        "type": "",
                        "value": "96"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "24304:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24304:18:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "24296:4:23"
                    }
                  ]
                }
              ]
            },
            "name": "abi_encode_tuple_t_stringliteral_e0060b83051574ba40ded2ef248b0d17cb210e5fa4f776d436805ab1ebb12b87__to_t_string_memory_ptr__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "24131:9:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "24145:4:23",
                "type": ""
              }
            ],
            "src": "23980:348:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "24606:441:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "headStart",
                        "nodeType": "YulIdentifier",
                        "src": "24623:9:23"
                      },
                      {
                        "name": "value0",
                        "nodeType": "YulIdentifier",
                        "src": "24634:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24616:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24616:25:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24616:25:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24661:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24672:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24657:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24657:18:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "24677:3:23",
                        "type": "",
                        "value": "160"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24650:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24650:31:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24650:31:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "24690:59:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "value1",
                        "nodeType": "YulIdentifier",
                        "src": "24721:6:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24733:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24744:3:23",
                            "type": "",
                            "value": "160"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24729:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24729:19:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "24704:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24704:45:23"
                  },
                  "variables": [
                    {
                      "name": "tail_1",
                      "nodeType": "YulTypedName",
                      "src": "24694:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24769:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24780:2:23",
                            "type": "",
                            "value": "64"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24765:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24765:18:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_1",
                            "nodeType": "YulIdentifier",
                            "src": "24789:6:23"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24797:9:23"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "24785:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24785:22:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24758:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24758:50:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24758:50:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "24817:46:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "value2",
                        "nodeType": "YulIdentifier",
                        "src": "24848:6:23"
                      },
                      {
                        "name": "tail_1",
                        "nodeType": "YulIdentifier",
                        "src": "24856:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "24831:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24831:32:23"
                  },
                  "variables": [
                    {
                      "name": "tail_2",
                      "nodeType": "YulTypedName",
                      "src": "24821:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24883:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "24894:2:23",
                            "type": "",
                            "value": "96"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24879:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24879:18:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "tail_2",
                            "nodeType": "YulIdentifier",
                            "src": "24903:6:23"
                          },
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24911:9:23"
                          }
                        ],
                        "functionName": {
                          "name": "sub",
                          "nodeType": "YulIdentifier",
                          "src": "24899:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24899:22:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24872:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24872:50:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24872:50:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "24931:40:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "value3",
                        "nodeType": "YulIdentifier",
                        "src": "24956:6:23"
                      },
                      {
                        "name": "tail_2",
                        "nodeType": "YulIdentifier",
                        "src": "24964:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "abi_encode_bytes",
                      "nodeType": "YulIdentifier",
                      "src": "24939:16:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24939:32:23"
                  },
                  "variableNames": [
                    {
                      "name": "tail",
                      "nodeType": "YulIdentifier",
                      "src": "24931:4:23"
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "headStart",
                            "nodeType": "YulIdentifier",
                            "src": "24991:9:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25002:3:23",
                            "type": "",
                            "value": "128"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "24987:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "24987:19:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "value4",
                            "nodeType": "YulIdentifier",
                            "src": "25012:6:23"
                          },
                          {
                            "arguments": [
                              {
                                "arguments": [
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25028:3:23",
                                    "type": "",
                                    "value": "160"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "25033:1:23",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "shl",
                                  "nodeType": "YulIdentifier",
                                  "src": "25024:3:23"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "25024:11:23"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "25037:1:23",
                                "type": "",
                                "value": "1"
                              }
                            ],
                            "functionName": {
                              "name": "sub",
                              "nodeType": "YulIdentifier",
                              "src": "25020:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "25020:19:23"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "25008:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25008:32:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "24980:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "24980:61:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "24980:61:23"
                }
              ]
            },
            "name": "abi_encode_tuple_t_uint256_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_address__to_t_uint256_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_address__fromStack_reversed",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "headStart",
                "nodeType": "YulTypedName",
                "src": "24543:9:23",
                "type": ""
              },
              {
                "name": "value4",
                "nodeType": "YulTypedName",
                "src": "24554:6:23",
                "type": ""
              },
              {
                "name": "value3",
                "nodeType": "YulTypedName",
                "src": "24562:6:23",
                "type": ""
              },
              {
                "name": "value2",
                "nodeType": "YulTypedName",
                "src": "24570:6:23",
                "type": ""
              },
              {
                "name": "value1",
                "nodeType": "YulTypedName",
                "src": "24578:6:23",
                "type": ""
              },
              {
                "name": "value0",
                "nodeType": "YulTypedName",
                "src": "24586:6:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "tail",
                "nodeType": "YulTypedName",
                "src": "24597:4:23",
                "type": ""
              }
            ],
            "src": "24333:714:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25120:114:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "25164:22:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "25166:16:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "25166:18:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "25166:18:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "25136:6:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25144:18:23",
                        "type": "",
                        "value": "0xffffffffffffffff"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "25133:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25133:30:23"
                  },
                  "nodeType": "YulIf",
                  "src": "25130:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "25195:33:23",
                  "value": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "25211:1:23",
                            "type": "",
                            "value": "5"
                          },
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "25214:6:23"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "25207:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "25207:14:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25223:4:23",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "25203:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25203:25:23"
                  },
                  "variableNames": [
                    {
                      "name": "size",
                      "nodeType": "YulIdentifier",
                      "src": "25195:4:23"
                    }
                  ]
                }
              ]
            },
            "name": "array_allocation_size_array_bytes2_dyn",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "25100:6:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "25111:4:23",
                "type": ""
              }
            ],
            "src": "25052:182:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25294:71:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "25311:4:23"
                      },
                      {
                        "name": "ptr",
                        "nodeType": "YulIdentifier",
                        "src": "25317:3:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25304:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25304:17:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25304:17:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "25330:29:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "25348:4:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25354:4:23",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "keccak256",
                      "nodeType": "YulIdentifier",
                      "src": "25338:9:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25338:21:23"
                  },
                  "variableNames": [
                    {
                      "name": "data",
                      "nodeType": "YulIdentifier",
                      "src": "25330:4:23"
                    }
                  ]
                }
              ]
            },
            "name": "array_dataslot_bytes_storage",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "ptr",
                "nodeType": "YulTypedName",
                "src": "25277:3:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "25285:4:23",
                "type": ""
              }
            ],
            "src": "25239:126:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25476:73:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "25493:3:23"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "25498:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "25486:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25486:19:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "25486:19:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "25514:29:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "pos",
                        "nodeType": "YulIdentifier",
                        "src": "25533:3:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25538:4:23",
                        "type": "",
                        "value": "0x20"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "25529:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25529:14:23"
                  },
                  "variableNames": [
                    {
                      "name": "updated_pos",
                      "nodeType": "YulIdentifier",
                      "src": "25514:11:23"
                    }
                  ]
                }
              ]
            },
            "name": "array_storeLengthForEncoding_array_struct_CredentialMetadata_dyn",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "pos",
                "nodeType": "YulTypedName",
                "src": "25444:3:23",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "25449:6:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "updated_pos",
                "nodeType": "YulTypedName",
                "src": "25460:11:23",
                "type": ""
              }
            ],
            "src": "25370:179:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25607:205:23",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "25617:10:23",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "25626:1:23",
                    "type": "",
                    "value": "0"
                  },
                  "variables": [
                    {
                      "name": "i",
                      "nodeType": "YulTypedName",
                      "src": "25621:1:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "25686:63:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "25711:3:23"
                                },
                                {
                                  "name": "i",
                                  "nodeType": "YulIdentifier",
                                  "src": "25716:1:23"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "25707:3:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "25707:11:23"
                            },
                            {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "name": "src",
                                      "nodeType": "YulIdentifier",
                                      "src": "25730:3:23"
                                    },
                                    {
                                      "name": "i",
                                      "nodeType": "YulIdentifier",
                                      "src": "25735:1:23"
                                    }
                                  ],
                                  "functionName": {
                                    "name": "add",
                                    "nodeType": "YulIdentifier",
                                    "src": "25726:3:23"
                                  },
                                  "nodeType": "YulFunctionCall",
                                  "src": "25726:11:23"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "25720:5:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "25720:18:23"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "25700:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "25700:39:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "25700:39:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "25647:1:23"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "25650:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "25644:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25644:13:23"
                  },
                  "nodeType": "YulForLoop",
                  "post": {
                    "nodeType": "YulBlock",
                    "src": "25658:19:23",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "25660:15:23",
                        "value": {
                          "arguments": [
                            {
                              "name": "i",
                              "nodeType": "YulIdentifier",
                              "src": "25669:1:23"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "25672:2:23",
                              "type": "",
                              "value": "32"
                            }
                          ],
                          "functionName": {
                            "name": "add",
                            "nodeType": "YulIdentifier",
                            "src": "25665:3:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "25665:10:23"
                        },
                        "variableNames": [
                          {
                            "name": "i",
                            "nodeType": "YulIdentifier",
                            "src": "25660:1:23"
                          }
                        ]
                      }
                    ]
                  },
                  "pre": {
                    "nodeType": "YulBlock",
                    "src": "25640:3:23",
                    "statements": []
                  },
                  "src": "25636:113:23"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "25775:31:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "name": "dst",
                                  "nodeType": "YulIdentifier",
                                  "src": "25788:3:23"
                                },
                                {
                                  "name": "length",
                                  "nodeType": "YulIdentifier",
                                  "src": "25793:6:23"
                                }
                              ],
                              "functionName": {
                                "name": "add",
                                "nodeType": "YulIdentifier",
                                "src": "25784:3:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "25784:16:23"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "25802:1:23",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "25777:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "25777:27:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "25777:27:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "i",
                        "nodeType": "YulIdentifier",
                        "src": "25764:1:23"
                      },
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "25767:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "25761:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25761:13:23"
                  },
                  "nodeType": "YulIf",
                  "src": "25758:2:23"
                }
              ]
            },
            "name": "copy_memory_to_memory",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "src",
                "nodeType": "YulTypedName",
                "src": "25585:3:23",
                "type": ""
              },
              {
                "name": "dst",
                "nodeType": "YulTypedName",
                "src": "25590:3:23",
                "type": ""
              },
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "25595:6:23",
                "type": ""
              }
            ],
            "src": "25554:258:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "25872:325:23",
              "statements": [
                {
                  "nodeType": "YulAssignment",
                  "src": "25882:22:23",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25896:1:23",
                        "type": "",
                        "value": "1"
                      },
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "25899:4:23"
                      }
                    ],
                    "functionName": {
                      "name": "shr",
                      "nodeType": "YulIdentifier",
                      "src": "25892:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25892:12:23"
                  },
                  "variableNames": [
                    {
                      "name": "length",
                      "nodeType": "YulIdentifier",
                      "src": "25882:6:23"
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "25913:38:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "25943:4:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "25949:1:23",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "and",
                      "nodeType": "YulIdentifier",
                      "src": "25939:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25939:12:23"
                  },
                  "variables": [
                    {
                      "name": "outOfPlaceEncoding",
                      "nodeType": "YulTypedName",
                      "src": "25917:18:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "25990:31:23",
                    "statements": [
                      {
                        "nodeType": "YulAssignment",
                        "src": "25992:27:23",
                        "value": {
                          "arguments": [
                            {
                              "name": "length",
                              "nodeType": "YulIdentifier",
                              "src": "26006:6:23"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "26014:4:23",
                              "type": "",
                              "value": "0x7f"
                            }
                          ],
                          "functionName": {
                            "name": "and",
                            "nodeType": "YulIdentifier",
                            "src": "26002:3:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "26002:17:23"
                        },
                        "variableNames": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "25992:6:23"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "25970:18:23"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "25963:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "25963:26:23"
                  },
                  "nodeType": "YulIf",
                  "src": "25960:2:23"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "26080:111:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "26101:1:23",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "26108:3:23",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "26113:10:23",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "26104:3:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "26104:20:23"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "26094:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "26094:31:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "26094:31:23"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "26145:1:23",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "26148:4:23",
                              "type": "",
                              "value": "0x22"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "26138:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "26138:15:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "26138:15:23"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "26173:1:23",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "26176:4:23",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "26166:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "26166:15:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "26166:15:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "outOfPlaceEncoding",
                        "nodeType": "YulIdentifier",
                        "src": "26036:18:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "length",
                            "nodeType": "YulIdentifier",
                            "src": "26059:6:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "26067:2:23",
                            "type": "",
                            "value": "32"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "26056:2:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26056:14:23"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "26033:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26033:38:23"
                  },
                  "nodeType": "YulIf",
                  "src": "26030:2:23"
                }
              ]
            },
            "name": "extract_byte_array_length",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "data",
                "nodeType": "YulTypedName",
                "src": "25852:4:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "length",
                "nodeType": "YulTypedName",
                "src": "25861:6:23",
                "type": ""
              }
            ],
            "src": "25817:380:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26248:179:23",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "26258:35:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "26280:6:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26288:4:23",
                        "type": "",
                        "value": "0x60"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "26276:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26276:17:23"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "26262:10:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "26368:22:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "26370:16:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "26370:18:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "26370:18:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "26311:10:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "26323:18:23",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "26308:2:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26308:34:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "26347:10:23"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "26359:6:23"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "26344:2:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26344:22:23"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "26305:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26305:62:23"
                  },
                  "nodeType": "YulIf",
                  "src": "26302:2:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26406:2:23",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "26410:10:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "26399:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26399:22:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26399:22:23"
                }
              ]
            },
            "name": "finalize_allocation_3643",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "26236:6:23",
                "type": ""
              }
            ],
            "src": "26202:225:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26479:202:23",
              "statements": [
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "26489:58:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "memPtr",
                        "nodeType": "YulIdentifier",
                        "src": "26511:6:23"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "size",
                                "nodeType": "YulIdentifier",
                                "src": "26527:4:23"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "26533:2:23",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "26523:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "26523:13:23"
                          },
                          {
                            "arguments": [
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "26542:2:23",
                                "type": "",
                                "value": "31"
                              }
                            ],
                            "functionName": {
                              "name": "not",
                              "nodeType": "YulIdentifier",
                              "src": "26538:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "26538:7:23"
                          }
                        ],
                        "functionName": {
                          "name": "and",
                          "nodeType": "YulIdentifier",
                          "src": "26519:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26519:27:23"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "26507:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26507:40:23"
                  },
                  "variables": [
                    {
                      "name": "newFreePtr",
                      "nodeType": "YulTypedName",
                      "src": "26493:10:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "26622:22:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [],
                          "functionName": {
                            "name": "panic_error_0x41",
                            "nodeType": "YulIdentifier",
                            "src": "26624:16:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "26624:18:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "26624:18:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "26565:10:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "26577:18:23",
                            "type": "",
                            "value": "0xffffffffffffffff"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "26562:2:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26562:34:23"
                      },
                      {
                        "arguments": [
                          {
                            "name": "newFreePtr",
                            "nodeType": "YulIdentifier",
                            "src": "26601:10:23"
                          },
                          {
                            "name": "memPtr",
                            "nodeType": "YulIdentifier",
                            "src": "26613:6:23"
                          }
                        ],
                        "functionName": {
                          "name": "lt",
                          "nodeType": "YulIdentifier",
                          "src": "26598:2:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26598:22:23"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "26559:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26559:62:23"
                  },
                  "nodeType": "YulIf",
                  "src": "26556:2:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26660:2:23",
                        "type": "",
                        "value": "64"
                      },
                      {
                        "name": "newFreePtr",
                        "nodeType": "YulIdentifier",
                        "src": "26664:10:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "26653:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26653:22:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26653:22:23"
                }
              ]
            },
            "name": "finalize_allocation",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "memPtr",
                "nodeType": "YulTypedName",
                "src": "26461:6:23",
                "type": ""
              },
              {
                "name": "size",
                "nodeType": "YulTypedName",
                "src": "26469:4:23",
                "type": ""
              }
            ],
            "src": "26432:249:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26733:189:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "26772:115:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "ret",
                              "nodeType": "YulIdentifier",
                              "src": "26793:3:23"
                            },
                            {
                              "arguments": [
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "26802:3:23",
                                  "type": "",
                                  "value": "224"
                                },
                                {
                                  "kind": "number",
                                  "nodeType": "YulLiteral",
                                  "src": "26807:10:23",
                                  "type": "",
                                  "value": "0x4e487b71"
                                }
                              ],
                              "functionName": {
                                "name": "shl",
                                "nodeType": "YulIdentifier",
                                "src": "26798:3:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "26798:20:23"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "26786:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "26786:33:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "26786:33:23"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "26839:1:23",
                              "type": "",
                              "value": "4"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "26842:4:23",
                              "type": "",
                              "value": "0x11"
                            }
                          ],
                          "functionName": {
                            "name": "mstore",
                            "nodeType": "YulIdentifier",
                            "src": "26832:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "26832:15:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "26832:15:23"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "ret",
                              "nodeType": "YulIdentifier",
                              "src": "26867:3:23"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "26872:4:23",
                              "type": "",
                              "value": "0x24"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "26860:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "26860:17:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "26860:17:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "26749:5:23"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "26760:1:23",
                            "type": "",
                            "value": "0"
                          }
                        ],
                        "functionName": {
                          "name": "not",
                          "nodeType": "YulIdentifier",
                          "src": "26756:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26756:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "eq",
                      "nodeType": "YulIdentifier",
                      "src": "26746:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26746:17:23"
                  },
                  "nodeType": "YulIf",
                  "src": "26743:2:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "26896:20:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "value",
                        "nodeType": "YulIdentifier",
                        "src": "26907:5:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26914:1:23",
                        "type": "",
                        "value": "1"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "26903:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26903:13:23"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "26896:3:23"
                    }
                  ]
                }
              ]
            },
            "name": "increment_t_uint256",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "26715:5:23",
                "type": ""
              }
            ],
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "26725:3:23",
                "type": ""
              }
            ],
            "src": "26686:236:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "26959:95:23",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "26976:1:23",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "arguments": [
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "26983:3:23",
                            "type": "",
                            "value": "224"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "26988:10:23",
                            "type": "",
                            "value": "0x4e487b71"
                          }
                        ],
                        "functionName": {
                          "name": "shl",
                          "nodeType": "YulIdentifier",
                          "src": "26979:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "26979:20:23"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "26969:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "26969:31:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "26969:31:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27016:1:23",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27019:4:23",
                        "type": "",
                        "value": "0x41"
                      }
                    ],
                    "functionName": {
                      "name": "mstore",
                      "nodeType": "YulIdentifier",
                      "src": "27009:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27009:15:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "27009:15:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27040:1:23",
                        "type": "",
                        "value": "0"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27043:4:23",
                        "type": "",
                        "value": "0x24"
                      }
                    ],
                    "functionName": {
                      "name": "revert",
                      "nodeType": "YulIdentifier",
                      "src": "27033:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27033:15:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "27033:15:23"
                }
              ]
            },
            "name": "panic_error_0x41",
            "nodeType": "YulFunctionDefinition",
            "src": "26927:127:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "27102:142:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "27147:91:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "name": "sig",
                              "nodeType": "YulIdentifier",
                              "src": "27176:3:23"
                            },
                            {
                              "name": "sig",
                              "nodeType": "YulIdentifier",
                              "src": "27181:3:23"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "27186:1:23",
                              "type": "",
                              "value": "4"
                            }
                          ],
                          "functionName": {
                            "name": "returndatacopy",
                            "nodeType": "YulIdentifier",
                            "src": "27161:14:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27161:27:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "27161:27:23"
                      },
                      {
                        "nodeType": "YulAssignment",
                        "src": "27201:27:23",
                        "value": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "27212:3:23",
                              "type": "",
                              "value": "224"
                            },
                            {
                              "arguments": [
                                {
                                  "name": "sig",
                                  "nodeType": "YulIdentifier",
                                  "src": "27223:3:23"
                                }
                              ],
                              "functionName": {
                                "name": "mload",
                                "nodeType": "YulIdentifier",
                                "src": "27217:5:23"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "27217:10:23"
                            }
                          ],
                          "functionName": {
                            "name": "shr",
                            "nodeType": "YulIdentifier",
                            "src": "27208:3:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "27208:20:23"
                        },
                        "variableNames": [
                          {
                            "name": "sig",
                            "nodeType": "YulIdentifier",
                            "src": "27201:3:23"
                          }
                        ]
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [],
                        "functionName": {
                          "name": "returndatasize",
                          "nodeType": "YulIdentifier",
                          "src": "27118:14:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27118:16:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27136:1:23",
                        "type": "",
                        "value": "3"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "27115:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27115:23:23"
                  },
                  "nodeType": "YulIf",
                  "src": "27112:2:23"
                }
              ]
            },
            "name": "return_data_selector",
            "nodeType": "YulFunctionDefinition",
            "returnVariables": [
              {
                "name": "sig",
                "nodeType": "YulTypedName",
                "src": "27094:3:23",
                "type": ""
              }
            ],
            "src": "27059:185:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "27296:624:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "27336:9:23",
                    "statements": [
                      {
                        "nodeType": "YulLeave",
                        "src": "27338:5:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [],
                        "functionName": {
                          "name": "returndatasize",
                          "nodeType": "YulIdentifier",
                          "src": "27312:14:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27312:16:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27330:4:23",
                        "type": "",
                        "value": "0x44"
                      }
                    ],
                    "functionName": {
                      "name": "lt",
                      "nodeType": "YulIdentifier",
                      "src": "27309:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27309:26:23"
                  },
                  "nodeType": "YulIf",
                  "src": "27306:2:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "27354:21:23",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27372:2:23",
                        "type": "",
                        "value": "64"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "27366:5:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27366:9:23"
                  },
                  "variables": [
                    {
                      "name": "data",
                      "nodeType": "YulTypedName",
                      "src": "27358:4:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "27384:16:23",
                  "value": {
                    "arguments": [
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27398:1:23",
                        "type": "",
                        "value": "3"
                      }
                    ],
                    "functionName": {
                      "name": "not",
                      "nodeType": "YulIdentifier",
                      "src": "27394:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27394:6:23"
                  },
                  "variables": [
                    {
                      "name": "_1",
                      "nodeType": "YulTypedName",
                      "src": "27388:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "27424:4:23"
                      },
                      {
                        "kind": "number",
                        "nodeType": "YulLiteral",
                        "src": "27430:1:23",
                        "type": "",
                        "value": "4"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [],
                            "functionName": {
                              "name": "returndatasize",
                              "nodeType": "YulIdentifier",
                              "src": "27437:14:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "27437:16:23"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "27455:2:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "27433:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27433:25:23"
                      }
                    ],
                    "functionName": {
                      "name": "returndatacopy",
                      "nodeType": "YulIdentifier",
                      "src": "27409:14:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27409:50:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "27409:50:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "27468:25:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "27488:4:23"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "27482:5:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27482:11:23"
                  },
                  "variables": [
                    {
                      "name": "offset",
                      "nodeType": "YulTypedName",
                      "src": "27472:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "27502:26:23",
                  "value": {
                    "arguments": [],
                    "functionName": {
                      "name": "returndatasize",
                      "nodeType": "YulIdentifier",
                      "src": "27512:14:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27512:16:23"
                  },
                  "variables": [
                    {
                      "name": "_2",
                      "nodeType": "YulTypedName",
                      "src": "27506:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "27537:28:23",
                  "value": {
                    "kind": "number",
                    "nodeType": "YulLiteral",
                    "src": "27547:18:23",
                    "type": "",
                    "value": "0xffffffffffffffff"
                  },
                  "variables": [
                    {
                      "name": "_3",
                      "nodeType": "YulTypedName",
                      "src": "27541:2:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "27623:9:23",
                    "statements": [
                      {
                        "nodeType": "YulLeave",
                        "src": "27625:5:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "offset",
                            "nodeType": "YulIdentifier",
                            "src": "27583:6:23"
                          },
                          {
                            "name": "_3",
                            "nodeType": "YulIdentifier",
                            "src": "27591:2:23"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "27580:2:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27580:14:23"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "27603:6:23"
                              },
                              {
                                "kind": "number",
                                "nodeType": "YulLiteral",
                                "src": "27611:4:23",
                                "type": "",
                                "value": "0x24"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "27599:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "27599:17:23"
                          },
                          {
                            "name": "_2",
                            "nodeType": "YulIdentifier",
                            "src": "27618:2:23"
                          }
                        ],
                        "functionName": {
                          "name": "gt",
                          "nodeType": "YulIdentifier",
                          "src": "27596:2:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27596:25:23"
                      }
                    ],
                    "functionName": {
                      "name": "or",
                      "nodeType": "YulIdentifier",
                      "src": "27577:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27577:45:23"
                  },
                  "nodeType": "YulIf",
                  "src": "27574:2:23"
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "27641:28:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "27656:4:23"
                      },
                      {
                        "name": "offset",
                        "nodeType": "YulIdentifier",
                        "src": "27662:6:23"
                      }
                    ],
                    "functionName": {
                      "name": "add",
                      "nodeType": "YulIdentifier",
                      "src": "27652:3:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27652:17:23"
                  },
                  "variables": [
                    {
                      "name": "msg",
                      "nodeType": "YulTypedName",
                      "src": "27645:3:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "nodeType": "YulVariableDeclaration",
                  "src": "27678:24:23",
                  "value": {
                    "arguments": [
                      {
                        "name": "msg",
                        "nodeType": "YulIdentifier",
                        "src": "27698:3:23"
                      }
                    ],
                    "functionName": {
                      "name": "mload",
                      "nodeType": "YulIdentifier",
                      "src": "27692:5:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27692:10:23"
                  },
                  "variables": [
                    {
                      "name": "length",
                      "nodeType": "YulTypedName",
                      "src": "27682:6:23",
                      "type": ""
                    }
                  ]
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "27729:9:23",
                    "statements": [
                      {
                        "nodeType": "YulLeave",
                        "src": "27731:5:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "name": "length",
                        "nodeType": "YulIdentifier",
                        "src": "27717:6:23"
                      },
                      {
                        "name": "_3",
                        "nodeType": "YulIdentifier",
                        "src": "27725:2:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "27714:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27714:14:23"
                  },
                  "nodeType": "YulIf",
                  "src": "27711:2:23"
                },
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "27820:9:23",
                    "statements": [
                      {
                        "nodeType": "YulLeave",
                        "src": "27822:5:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "msg",
                                "nodeType": "YulIdentifier",
                                "src": "27761:3:23"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "27766:6:23"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "27757:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "27757:16:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "27775:4:23",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "27753:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27753:27:23"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "data",
                                "nodeType": "YulIdentifier",
                                "src": "27790:4:23"
                              },
                              {
                                "arguments": [],
                                "functionName": {
                                  "name": "returndatasize",
                                  "nodeType": "YulIdentifier",
                                  "src": "27796:14:23"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "27796:16:23"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "27786:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "27786:27:23"
                          },
                          {
                            "name": "_1",
                            "nodeType": "YulIdentifier",
                            "src": "27815:2:23"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "27782:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27782:36:23"
                      }
                    ],
                    "functionName": {
                      "name": "gt",
                      "nodeType": "YulIdentifier",
                      "src": "27750:2:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27750:69:23"
                  },
                  "nodeType": "YulIf",
                  "src": "27747:2:23"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "name": "data",
                        "nodeType": "YulIdentifier",
                        "src": "27858:4:23"
                      },
                      {
                        "arguments": [
                          {
                            "arguments": [
                              {
                                "name": "offset",
                                "nodeType": "YulIdentifier",
                                "src": "27872:6:23"
                              },
                              {
                                "name": "length",
                                "nodeType": "YulIdentifier",
                                "src": "27880:6:23"
                              }
                            ],
                            "functionName": {
                              "name": "add",
                              "nodeType": "YulIdentifier",
                              "src": "27868:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "27868:19:23"
                          },
                          {
                            "kind": "number",
                            "nodeType": "YulLiteral",
                            "src": "27889:4:23",
                            "type": "",
                            "value": "0x20"
                          }
                        ],
                        "functionName": {
                          "name": "add",
                          "nodeType": "YulIdentifier",
                          "src": "27864:3:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27864:30:23"
                      }
                    ],
                    "functionName": {
                      "name": "finalize_allocation",
                      "nodeType": "YulIdentifier",
                      "src": "27838:19:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27838:57:23"
                  },
                  "nodeType": "YulExpressionStatement",
                  "src": "27838:57:23"
                },
                {
                  "nodeType": "YulAssignment",
                  "src": "27904:10:23",
                  "value": {
                    "name": "msg",
                    "nodeType": "YulIdentifier",
                    "src": "27911:3:23"
                  },
                  "variableNames": [
                    {
                      "name": "ret",
                      "nodeType": "YulIdentifier",
                      "src": "27904:3:23"
                    }
                  ]
                }
              ]
            },
            "name": "try_decode_error_message",
            "nodeType": "YulFunctionDefinition",
            "returnVariables": [
              {
                "name": "ret",
                "nodeType": "YulTypedName",
                "src": "27288:3:23",
                "type": ""
              }
            ],
            "src": "27249:671:23"
          },
          {
            "body": {
              "nodeType": "YulBlock",
              "src": "27970:86:23",
              "statements": [
                {
                  "body": {
                    "nodeType": "YulBlock",
                    "src": "28034:16:23",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "28043:1:23",
                              "type": "",
                              "value": "0"
                            },
                            {
                              "kind": "number",
                              "nodeType": "YulLiteral",
                              "src": "28046:1:23",
                              "type": "",
                              "value": "0"
                            }
                          ],
                          "functionName": {
                            "name": "revert",
                            "nodeType": "YulIdentifier",
                            "src": "28036:6:23"
                          },
                          "nodeType": "YulFunctionCall",
                          "src": "28036:12:23"
                        },
                        "nodeType": "YulExpressionStatement",
                        "src": "28036:12:23"
                      }
                    ]
                  },
                  "condition": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "name": "value",
                            "nodeType": "YulIdentifier",
                            "src": "27993:5:23"
                          },
                          {
                            "arguments": [
                              {
                                "name": "value",
                                "nodeType": "YulIdentifier",
                                "src": "28004:5:23"
                              },
                              {
                                "arguments": [
                                  {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28019:3:23",
                                        "type": "",
                                        "value": "160"
                                      },
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "28024:1:23",
                                        "type": "",
                                        "value": "1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "shl",
                                      "nodeType": "YulIdentifier",
                                      "src": "28015:3:23"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "28015:11:23"
                                  },
                                  {
                                    "kind": "number",
                                    "nodeType": "YulLiteral",
                                    "src": "28028:1:23",
                                    "type": "",
                                    "value": "1"
                                  }
                                ],
                                "functionName": {
                                  "name": "sub",
                                  "nodeType": "YulIdentifier",
                                  "src": "28011:3:23"
                                },
                                "nodeType": "YulFunctionCall",
                                "src": "28011:19:23"
                              }
                            ],
                            "functionName": {
                              "name": "and",
                              "nodeType": "YulIdentifier",
                              "src": "28000:3:23"
                            },
                            "nodeType": "YulFunctionCall",
                            "src": "28000:31:23"
                          }
                        ],
                        "functionName": {
                          "name": "eq",
                          "nodeType": "YulIdentifier",
                          "src": "27990:2:23"
                        },
                        "nodeType": "YulFunctionCall",
                        "src": "27990:42:23"
                      }
                    ],
                    "functionName": {
                      "name": "iszero",
                      "nodeType": "YulIdentifier",
                      "src": "27983:6:23"
                    },
                    "nodeType": "YulFunctionCall",
                    "src": "27983:50:23"
                  },
                  "nodeType": "YulIf",
                  "src": "27980:2:23"
                }
              ]
            },
            "name": "validator_revert_address",
            "nodeType": "YulFunctionDefinition",
            "parameters": [
              {
                "name": "value",
                "nodeType": "YulTypedName",
                "src": "27959:5:23",
                "type": ""
              }
            ],
            "src": "27925:131:23"
          }
        ]
      },
      "contents": "{\n    { }\n    function abi_decode_array_bytes2_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let _3 := array_allocation_size_array_bytes2_dyn(_1)\n        let memPtr := mload(64)\n        finalize_allocation(memPtr, _3)\n        let dst := memPtr\n        mstore(memPtr, _1)\n        dst := add(memPtr, _2)\n        let src := add(offset, _2)\n        if gt(add(add(offset, shl(5, _1)), _2), end) { revert(array, array) }\n        let i := array\n        for { } lt(i, _1) { i := add(i, 1) }\n        {\n            mstore(dst, abi_decode_bytes2(src))\n            dst := add(dst, _2)\n            src := add(src, _2)\n        }\n        array := memPtr\n    }\n    function abi_decode_array_struct_CredentialIdentifier_dyn(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        let _2 := 0x20\n        let _3 := array_allocation_size_array_bytes2_dyn(_1)\n        let _4 := 64\n        let memPtr := mload(_4)\n        finalize_allocation(memPtr, _3)\n        let dst := memPtr\n        mstore(memPtr, _1)\n        dst := add(memPtr, _2)\n        let src := add(offset, _2)\n        let _5 := 0x60\n        if gt(add(add(offset, mul(_1, _5)), _2), end) { revert(array, array) }\n        let i := array\n        for { } lt(i, _1) { i := add(i, 1) }\n        {\n            if slt(sub(end, src), _5) { revert(array, array) }\n            let memPtr_1 := mload(_4)\n            finalize_allocation_3643(memPtr_1)\n            let value := calldataload(src)\n            validator_revert_address(value)\n            mstore(memPtr_1, value)\n            mstore(add(memPtr_1, _2), calldataload(add(src, _2)))\n            mstore(add(memPtr_1, _4), abi_decode_uint32(add(src, _4)))\n            mstore(dst, memPtr_1)\n            dst := add(dst, _2)\n            src := add(src, _5)\n        }\n        array := memPtr\n    }\n    function abi_decode_bytes2(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, shl(240, 65535)))) { revert(0, 0) }\n    }\n    function abi_decode_bytes(offset, end) -> array\n    {\n        if iszero(slt(add(offset, 0x1f), end)) { revert(array, array) }\n        let _1 := calldataload(offset)\n        if gt(_1, 0xffffffffffffffff) { panic_error_0x41() }\n        let memPtr := mload(64)\n        finalize_allocation(memPtr, add(and(add(_1, 0x1f), not(31)), 0x20))\n        mstore(memPtr, _1)\n        if gt(add(add(offset, _1), 0x20), end) { revert(array, array) }\n        calldatacopy(add(memPtr, 0x20), add(offset, 0x20), _1)\n        mstore(add(add(memPtr, _1), 0x20), array)\n        array := memPtr\n    }\n    function abi_decode_uint32(offset) -> value\n    {\n        value := calldataload(offset)\n        if iszero(eq(value, and(value, 0xffffffff))) { revert(0, 0) }\n    }\n    function abi_decode_tuple_t_address(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_address_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let value := mload(headStart)\n        validator_revert_address(value)\n        value0 := value\n    }\n    function abi_decode_tuple_t_addresst_array$_t_bytes2_$dyn_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value1, value1) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        let offset := calldataload(add(headStart, 32))\n        if gt(offset, 0xffffffffffffffff) { revert(value1, value1) }\n        value1 := abi_decode_array_bytes2_dyn(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_addresst_bytes2(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := abi_decode_bytes2(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_addresst_uint256(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let value := calldataload(headStart)\n        validator_revert_address(value)\n        value0 := value\n        value1 := calldataload(add(headStart, 32))\n    }\n    function abi_decode_tuple_t_array$_t_bytes2_$dyn_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        value0 := abi_decode_array_bytes2_dyn(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        if gt(offset, 0xffffffffffffffff) { revert(value0, value0) }\n        value0 := abi_decode_array_struct_CredentialIdentifier_dyn(add(headStart, offset), dataEnd)\n    }\n    function abi_decode_tuple_t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptrt_string_memory_ptrt_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3\n    {\n        if slt(sub(dataEnd, headStart), 128) { revert(value2, value2) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value2, value2) }\n        value0 := abi_decode_array_struct_CredentialIdentifier_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(value2, value2) }\n        value1 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 64))\n        if gt(offset_2, _1) { revert(value2, value2) }\n        value2 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n        let offset_3 := calldataload(add(headStart, 96))\n        if gt(offset_3, _1) { revert(value3, value3) }\n        value3 := abi_decode_bytes(add(headStart, offset_3), dataEnd)\n    }\n    function abi_decode_tuple_t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptrt_string_memory_ptrt_string_memory_ptrt_string_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4\n    {\n        if slt(sub(dataEnd, headStart), 160) { revert(value2, value2) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value2, value2) }\n        value0 := abi_decode_array_struct_CredentialIdentifier_dyn(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(value2, value2) }\n        value1 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 64))\n        if gt(offset_2, _1) { revert(value2, value2) }\n        value2 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n        let offset_3 := calldataload(add(headStart, 96))\n        if gt(offset_3, _1) { revert(value4, value4) }\n        value3 := abi_decode_bytes(add(headStart, offset_3), dataEnd)\n        let offset_4 := calldataload(add(headStart, 128))\n        if gt(offset_4, _1) { revert(value4, value4) }\n        value4 := abi_decode_bytes(add(headStart, offset_4), dataEnd)\n    }\n    function abi_decode_tuple_t_bytes2(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := abi_decode_bytes2(headStart)\n    }\n    function abi_decode_tuple_t_bytes2t_bytes_memory_ptrt_uint256t_uint32t_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(value2, value2) }\n        value0 := abi_decode_bytes2(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value2, value2) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        value2 := calldataload(add(headStart, 64))\n        value3 := abi_decode_uint32(add(headStart, 96))\n        let offset_1 := calldataload(add(headStart, 128))\n        if gt(offset_1, _1) { revert(value5, value5) }\n        value4 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 160))\n        if gt(offset_2, _1) { revert(value5, value5) }\n        value5 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_bytes2t_bytes_memory_ptrt_uint256t_uint32t_string_memory_ptrt_string_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(value2, value2) }\n        value0 := abi_decode_bytes2(headStart)\n        let offset := calldataload(add(headStart, 32))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value2, value2) }\n        value1 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        value2 := calldataload(add(headStart, 64))\n        value3 := abi_decode_uint32(add(headStart, 96))\n        let offset_1 := calldataload(add(headStart, 128))\n        if gt(offset_1, _1) { revert(value6, value6) }\n        value4 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 160))\n        if gt(offset_2, _1) { revert(value6, value6) }\n        value5 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n        let offset_3 := calldataload(add(headStart, 192))\n        if gt(offset_3, _1) { revert(value6, value6) }\n        value6 := abi_decode_bytes(add(headStart, offset_3), dataEnd)\n    }\n    function abi_decode_tuple_t_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1\n    {\n        if slt(sub(dataEnd, headStart), 64) { revert(value0, value0) }\n        let offset := calldataload(headStart)\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value0, value0) }\n        value0 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 32))\n        if gt(offset_1, _1) { revert(value1, value1) }\n        value1 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256_fromMemory(headStart, dataEnd) -> value0\n    {\n        if slt(sub(dataEnd, headStart), 32) { revert(value0, value0) }\n        value0 := mload(headStart)\n    }\n    function abi_decode_tuple_t_uint256t_bytes2t_bytes2t_bytes_memory_ptrt_string_memory_ptrt_string_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5\n    {\n        if slt(sub(dataEnd, headStart), 192) { revert(value2, value2) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_bytes2(add(headStart, 32))\n        value2 := abi_decode_bytes2(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value4, value4) }\n        value3 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 128))\n        if gt(offset_1, _1) { revert(value4, value4) }\n        value4 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 160))\n        if gt(offset_2, _1) { revert(value5, value5) }\n        value5 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n    }\n    function abi_decode_tuple_t_uint256t_bytes2t_bytes2t_bytes_memory_ptrt_string_memory_ptrt_string_memory_ptrt_bytes_memory_ptr(headStart, dataEnd) -> value0, value1, value2, value3, value4, value5, value6\n    {\n        if slt(sub(dataEnd, headStart), 224) { revert(value6, value6) }\n        value0 := calldataload(headStart)\n        value1 := abi_decode_bytes2(add(headStart, 32))\n        value2 := abi_decode_bytes2(add(headStart, 64))\n        let offset := calldataload(add(headStart, 96))\n        let _1 := 0xffffffffffffffff\n        if gt(offset, _1) { revert(value6, value6) }\n        value3 := abi_decode_bytes(add(headStart, offset), dataEnd)\n        let offset_1 := calldataload(add(headStart, 128))\n        if gt(offset_1, _1) { revert(value6, value6) }\n        value4 := abi_decode_bytes(add(headStart, offset_1), dataEnd)\n        let offset_2 := calldataload(add(headStart, 160))\n        if gt(offset_2, _1) { revert(value6, value6) }\n        value5 := abi_decode_bytes(add(headStart, offset_2), dataEnd)\n        let offset_3 := calldataload(add(headStart, 192))\n        if gt(offset_3, _1) { revert(value6, value6) }\n        value6 := abi_decode_bytes(add(headStart, offset_3), dataEnd)\n    }\n    function abi_encode_bytes2(value, pos)\n    {\n        mstore(pos, and(value, shl(240, 65535)))\n    }\n    function abi_encode_bytes(value, pos) -> end\n    {\n        let length := mload(value)\n        mstore(pos, length)\n        copy_memory_to_memory(add(value, 0x20), add(pos, 0x20), length)\n        end := add(add(pos, and(add(length, 31), not(31))), 0x20)\n    }\n    function abi_encode_uint32(value, pos)\n    {\n        mstore(pos, and(value, 0xffffffff))\n    }\n    function abi_encode_tuple_packed_t_string_memory_ptr__to_t_string_memory_ptr__nonPadded_inplace_fromStack_reversed(pos, value0) -> end\n    {\n        let length := mload(value0)\n        copy_memory_to_memory(add(value0, 0x20), pos, length)\n        end := add(pos, length)\n    }\n    function abi_encode_tuple_t_address__to_t_address__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n    }\n    function abi_encode_tuple_t_address_t_bytes_memory_ptr_t_uint256_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_bytes_memory_ptr_t_uint256_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 160)\n        let tail_1 := abi_encode_bytes(value1, add(headStart, 160))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), sub(tail_1, headStart))\n        let tail_2 := abi_encode_bytes(value3, tail_1)\n        mstore(add(headStart, 128), sub(tail_2, headStart))\n        tail := abi_encode_bytes(value4, tail_2)\n    }\n    function abi_encode_tuple_t_address_t_bytes_storage_t_uint256_t_bytes2_t_uint32_t_string_memory_ptr_t_string_memory_ptr__to_t_address_t_bytes_memory_ptr_t_uint256_t_bytes2_t_uint32_t_string_memory_ptr_t_string_memory_ptr__fromStack_reversed(headStart, value6, value5, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 224)\n        let ret := tail\n        let slotValue := sload(value1)\n        let length := tail\n        let _1 := 1\n        length := shr(_1, slotValue)\n        let outOfPlaceEncoding := and(slotValue, _1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(tail, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(tail, 0x24)\n        }\n        let pos := array_storeLengthForEncoding_array_struct_CredentialMetadata_dyn(add(headStart, 224), length)\n        switch outOfPlaceEncoding\n        case 0 {\n            mstore(pos, and(slotValue, not(255)))\n            ret := add(pos, 32)\n        }\n        case 1 {\n            let dataPos := array_dataslot_bytes_storage(value1)\n            let i := tail\n            for { } lt(i, length) { i := add(i, 32) }\n            {\n                mstore(add(pos, i), sload(dataPos))\n                dataPos := add(dataPos, _1)\n            }\n            ret := add(pos, i)\n        }\n        mstore(add(headStart, 64), value2)\n        abi_encode_bytes2(value3, add(headStart, 96))\n        abi_encode_uint32(value4, add(headStart, 128))\n        mstore(add(headStart, 160), sub(ret, headStart))\n        let tail_1 := abi_encode_bytes(value5, ret)\n        mstore(add(headStart, 192), sub(tail_1, headStart))\n        tail := abi_encode_bytes(value6, tail_1)\n    }\n    function abi_encode_tuple_t_address_t_string_memory_ptr__to_t_address_t_string_memory_ptr__fromStack_reversed(headStart, value1, value0) -> tail\n    {\n        mstore(headStart, and(value0, sub(shl(160, 1), 1)))\n        mstore(add(headStart, 32), 64)\n        tail := abi_encode_bytes(value1, add(headStart, 64))\n    }\n    function abi_encode_tuple_t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr__to_t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        let _1 := 32\n        let tail_1 := add(headStart, _1)\n        mstore(headStart, _1)\n        let pos := tail_1\n        let length := mload(value0)\n        mstore(tail_1, length)\n        let _2 := 64\n        pos := add(headStart, _2)\n        let tail_2 := add(add(headStart, shl(5, length)), _2)\n        let srcPtr := add(value0, _1)\n        let i := tail\n        for { } lt(i, length) { i := add(i, 1) }\n        {\n            mstore(pos, add(sub(tail_2, headStart), not(63)))\n            let _3 := mload(srcPtr)\n            let _4 := 0xa0\n            let _5 := shl(240, 65535)\n            mstore(tail_2, and(mload(_3), _5))\n            mstore(add(tail_2, _1), and(mload(add(_3, _1)), _5))\n            mstore(add(tail_2, _2), and(mload(add(_3, _2)), _5))\n            let _6 := 0x60\n            let memberValue0 := mload(add(_3, _6))\n            mstore(add(tail_2, _6), _4)\n            let tail_3 := abi_encode_bytes(memberValue0, add(tail_2, _4))\n            let _7 := 0x80\n            let memberValue0_1 := mload(add(_3, _7))\n            mstore(add(tail_2, _7), sub(tail_3, tail_2))\n            tail_2 := abi_encode_bytes(memberValue0_1, tail_3)\n            srcPtr := add(srcPtr, _1)\n            pos := add(pos, _1)\n        }\n        tail := tail_2\n    }\n    function abi_encode_tuple_t_bool__to_t_bool__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, iszero(iszero(value0)))\n    }\n    function abi_encode_tuple_t_bytes2_t_bytes2_t_bytes_memory_ptr_t_bool__to_t_bytes2_t_bytes2_t_bytes_memory_ptr_t_bool__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        let _1 := shl(240, 65535)\n        mstore(headStart, and(value0, _1))\n        mstore(add(headStart, 32), and(value1, _1))\n        mstore(add(headStart, 64), 128)\n        tail := abi_encode_bytes(value2, add(headStart, 128))\n        mstore(add(headStart, 96), iszero(iszero(value3)))\n    }\n    function abi_encode_tuple_t_bytes32_t_uint8_t_bytes32_t_bytes32__to_t_bytes32_t_uint8_t_bytes32_t_bytes32__fromStack_reversed(headStart, value3, value2, value1, value0) -> tail\n    {\n        tail := add(headStart, 128)\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), and(value1, 0xff))\n        mstore(add(headStart, 64), value2)\n        mstore(add(headStart, 96), value3)\n    }\n    function abi_encode_tuple_t_rational_1_by_1__to_t_uint8__fromStack_reversed(headStart, value0) -> tail\n    {\n        tail := add(headStart, 32)\n        mstore(headStart, and(value0, 0xff))\n    }\n    function abi_encode_tuple_t_string_memory_ptr__to_t_string_memory_ptr__fromStack_reversed(headStart, value0) -> tail\n    {\n        mstore(headStart, 32)\n        tail := abi_encode_bytes(value0, add(headStart, 32))\n    }\n    function abi_encode_tuple_t_stringliteral_1742f33f239814f4f24d27ea94d36db4ee95bbdd15300a47d6f32b5fb11a5ad8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 30)\n        mstore(add(headStart, 64), \"Permissions: caller is not VNF\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_32cc480c4f0e15e5ce7060ec5e004886ed5a15831cba1ff1aa7cb787be55bb60__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 13)\n        mstore(add(headStart, 64), \"Invalid index\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_38f9caf05bedd63059484a2336fad9725a700df02b1ed12a2feaa2e7557f5a96__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 53)\n        mstore(add(headStart, 64), \"Only free creadential types is a\")\n        mstore(add(headStart, 96), \"llowed without coupon\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_41b8b6374a309ddf81ce65f2d06dc359c5aae9c1bcc0f9806cf2a6245f4d39e4__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"List Id not aveliable\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_6fa0b2c1699635dde7e841a535d59942efd59d076beaa50d6f68606bcaf3d16c__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 16)\n        mstore(add(headStart, 64), \"List id not used\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_7a2a4e26842155ea933fe6eb6e3137eb5a296dcdf55721c552be7b4c3cc23759__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 46)\n        mstore(add(headStart, 64), \"Initializable: contract is alrea\")\n        mstore(add(headStart, 96), \"dy initialized\")\n        tail := add(headStart, 128)\n    }\n    function abi_encode_tuple_t_stringliteral_83c0982fcda1b18a6920fc2c8458652fed1771abb009fc4d894e970aefcd7bfd__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 25)\n        mstore(add(headStart, 64), \"No paid creadential types\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ac07a71f12c270c07ea84bb01e6423293637c251609564d208901a72bdb04be8__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 21)\n        mstore(add(headStart, 64), \"The caller is not VNF\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_c57c76870af50170e56f334aa7d668c01e0f778a9ec2a72d64e4626ef1552d53__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 20)\n        mstore(add(headStart, 64), \"List id already used\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_d4eeb7b9737a35467cf971936b92fcf69bb10ccb8683e841e08d9bef44aef8e0__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 14)\n        mstore(add(headStart, 64), \"Index not used\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_ddf5de362b31a0f65f67c58bfa9515cbad454ca52b26577ff3fd46947e49aaf3__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 18)\n        mstore(add(headStart, 64), \"Index already used\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_stringliteral_e0060b83051574ba40ded2ef248b0d17cb210e5fa4f776d436805ab1ebb12b87__to_t_string_memory_ptr__fromStack_reversed(headStart) -> tail\n    {\n        mstore(headStart, 32)\n        mstore(add(headStart, 32), 24)\n        mstore(add(headStart, 64), \"invalid signature length\")\n        tail := add(headStart, 96)\n    }\n    function abi_encode_tuple_t_uint256_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_address__to_t_uint256_t_string_memory_ptr_t_string_memory_ptr_t_string_memory_ptr_t_address__fromStack_reversed(headStart, value4, value3, value2, value1, value0) -> tail\n    {\n        mstore(headStart, value0)\n        mstore(add(headStart, 32), 160)\n        let tail_1 := abi_encode_bytes(value1, add(headStart, 160))\n        mstore(add(headStart, 64), sub(tail_1, headStart))\n        let tail_2 := abi_encode_bytes(value2, tail_1)\n        mstore(add(headStart, 96), sub(tail_2, headStart))\n        tail := abi_encode_bytes(value3, tail_2)\n        mstore(add(headStart, 128), and(value4, sub(shl(160, 1), 1)))\n    }\n    function array_allocation_size_array_bytes2_dyn(length) -> size\n    {\n        if gt(length, 0xffffffffffffffff) { panic_error_0x41() }\n        size := add(shl(5, length), 0x20)\n    }\n    function array_dataslot_bytes_storage(ptr) -> data\n    {\n        mstore(data, ptr)\n        data := keccak256(data, 0x20)\n    }\n    function array_storeLengthForEncoding_array_struct_CredentialMetadata_dyn(pos, length) -> updated_pos\n    {\n        mstore(pos, length)\n        updated_pos := add(pos, 0x20)\n    }\n    function copy_memory_to_memory(src, dst, length)\n    {\n        let i := 0\n        for { } lt(i, length) { i := add(i, 32) }\n        {\n            mstore(add(dst, i), mload(add(src, i)))\n        }\n        if gt(i, length) { mstore(add(dst, length), 0) }\n    }\n    function extract_byte_array_length(data) -> length\n    {\n        length := shr(1, data)\n        let outOfPlaceEncoding := and(data, 1)\n        if iszero(outOfPlaceEncoding) { length := and(length, 0x7f) }\n        if eq(outOfPlaceEncoding, lt(length, 32))\n        {\n            mstore(0, shl(224, 0x4e487b71))\n            mstore(4, 0x22)\n            revert(0, 0x24)\n        }\n    }\n    function finalize_allocation_3643(memPtr)\n    {\n        let newFreePtr := add(memPtr, 0x60)\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function finalize_allocation(memPtr, size)\n    {\n        let newFreePtr := add(memPtr, and(add(size, 31), not(31)))\n        if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { panic_error_0x41() }\n        mstore(64, newFreePtr)\n    }\n    function increment_t_uint256(value) -> ret\n    {\n        if eq(value, not(0))\n        {\n            mstore(ret, shl(224, 0x4e487b71))\n            mstore(4, 0x11)\n            revert(ret, 0x24)\n        }\n        ret := add(value, 1)\n    }\n    function panic_error_0x41()\n    {\n        mstore(0, shl(224, 0x4e487b71))\n        mstore(4, 0x41)\n        revert(0, 0x24)\n    }\n    function return_data_selector() -> sig\n    {\n        if gt(returndatasize(), 3)\n        {\n            returndatacopy(sig, sig, 4)\n            sig := shr(224, mload(sig))\n        }\n    }\n    function try_decode_error_message() -> ret\n    {\n        if lt(returndatasize(), 0x44) { leave }\n        let data := mload(64)\n        let _1 := not(3)\n        returndatacopy(data, 4, add(returndatasize(), _1))\n        let offset := mload(data)\n        let _2 := returndatasize()\n        let _3 := 0xffffffffffffffff\n        if or(gt(offset, _3), gt(add(offset, 0x24), _2)) { leave }\n        let msg := add(data, offset)\n        let length := mload(msg)\n        if gt(length, _3) { leave }\n        if gt(add(add(msg, length), 0x20), add(add(data, returndatasize()), _1)) { leave }\n        finalize_allocation(data, add(add(offset, length), 0x20))\n        ret := msg\n    }\n    function validator_revert_address(value)\n    {\n        if iszero(eq(value, and(value, sub(shl(160, 1), 1)))) { revert(0, 0) }\n    }\n}",
      "id": 23,
      "language": "Yul",
      "name": "#utility.yul"
    }
  ],
  "sourceMap": "387:15892:21:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "387:15892:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7941:339;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1011:50;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18656:14:23;;18649:22;18631:41;;18619:2;18604:18;1011:50:21;18586:92:23;5996:302:21;;;;;;:::i;:::-;;:::i;:::-;;2412:176;;;;;;:::i;:::-;;:::i;16105:172::-;;;;;;:::i;:::-;;:::i;8570:413::-;;;;;;:::i;:::-;;:::i;8286:278::-;;;;;;:::i;:::-;;:::i;3002:380::-;;;;;;:::i;:::-;;:::i;1747:299::-;;;;;;:::i;:::-;;:::i;2594:143::-;;;;;;:::i;:::-;-1:-1:-1;;;;;2701:16:21;;;;2679:4;2701:16;;;:5;:16;;;;;;;;:24;;;;;;;;;:29;;;;;2594:143;2743:253;;;;;;:::i;:::-;;:::i;3987:323::-;;;;;;:::i;:::-;;:::i;6304:138::-;;;;;;:::i;:::-;-1:-1:-1;;;;;;6400:35:21;6378:4;6400:35;;;:19;:35;;;;;;;;;6304:138;5691:299;;;;;;:::i;:::-;;:::i;2299:107::-;2387:11;;-1:-1:-1;;;;;2387:11:21;2299:107;;;-1:-1:-1;;;;;14088:32:23;;;14070:51;;14058:2;14043:18;2299:107:21;14025:102:23;4316:458:21;;;;;;:::i;:::-;;:::i;1067:65::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;9537:598::-;;;;;;:::i;:::-;;:::i;2052:241::-;;;;;;:::i;:::-;;:::i;7941:339::-;8045:27;8084:35;8122:26;8134:13;8122:11;:26::i;:::-;8084:64;;8166:25;8183:7;8166:16;:25::i;:::-;8158:91;;;;-1:-1:-1;;;8158:91:21;;20907:2:23;8158:91:21;;;20889:21:23;20946:2;20926:18;;;20919:30;20985:34;20965:18;;;20958:62;-1:-1:-1;;;21036:18:23;;;21029:51;21097:19;;8158:91:21;;;;;;;;;8266:7;7941:339;-1:-1:-1;;7941:339:21:o;5996:302::-;6101:6;;;;;;;;;-1:-1:-1;;;;;6101:6:21;-1:-1:-1;;;;;6101:13:21;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;6087:29:21;:10;-1:-1:-1;;;;;6087:29:21;;6079:63;;;;-1:-1:-1;;;6079:63:21;;;;;;;:::i;:::-;6157:9;6152:140;6176:23;:30;6172:1;:34;6152:140;;;6234:19;:47;6254:23;6278:1;6254:26;;;;;;-1:-1:-1;;;6254:26:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;6234:47:21;;;;;;;;;;;-1:-1:-1;6234:47:21;6227:54;;-1:-1:-1;;6227:54:21;;;6208:3;;;;:::i;:::-;;;;6152:140;;;;5996:302;:::o;2412:176::-;2494:6;;;;;;;;;-1:-1:-1;;;;;2494:6:21;-1:-1:-1;;;;;2494:13:21;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2480:29:21;:10;-1:-1:-1;;;;;2480:29:21;;2472:63;;;;-1:-1:-1;;;2472:63:21;;;;;;;:::i;:::-;2545:6;:36;;-1:-1:-1;;;;;2545:36:21;;;;;-1:-1:-1;;;;;;2545:36:21;;;;;;;;;2412:176::o;16105:172::-;16177:4;16265:1;16247:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;16237:32;;;;;;16229:1;16211:21;;;;;;;;:::i;:::-;;;;;;;;;;;;;16201:32;;;;;;:68;16193:77;;16105:172;;;;:::o;8570:413::-;8857:22;;;8868:10;8857:22;;;14070:51:23;8802:16:21;;8821:70;;14043:18:23;8857:22:21;;;;;;;;;;;;;8881:9;8821:35;:70::i;:::-;8802:89;;8901:75;8924:13;8939:7;8948:6;8956:9;8967:8;8901:22;:75::i;:::-;8570:413;;;;;;:::o;8286:278::-;8480:77;8503:13;8518:7;8527:6;8535:9;8546:10;8480:22;:77::i;:::-;8286:278;;;;:::o;3002:380::-;3245:22;;;3256:10;3245:22;;;14070:51:23;3190:16:21;;3209:70;;14043:18:23;3245:22:21;14025:102:23;3209:70:21;3190:89;;3289:86;3313:6;3321:7;3330;3339:8;3349:7;3358:6;3366:8;3289:23;:86::i;:::-;3002:380;;;;;;;;:::o;1747:299::-;3279:19:4;3302:13;;;;;;3301:14;;3347:34;;;;-1:-1:-1;3365:12:4;;3380:1;3365:12;;;;:16;3347:34;3346:108;;;-1:-1:-1;3426:4:4;1713:19:9;:23;;;3387:66:4;;-1:-1:-1;3436:12:4;;;;;:17;3387:66;3325:201;;;;-1:-1:-1;;;3325:201:4;;22024:2:23;3325:201:4;;;22006:21:23;22063:2;22043:18;;;22036:30;22102:34;22082:18;;;22075:62;-1:-1:-1;;;22153:18:23;;;22146:44;22207:19;;3325:201:4;21996:236:23;3325:201:4;3536:12;:16;;-1:-1:-1;;3536:16:4;3551:1;3536:16;;;3562:65;;;;3596:13;:20;;-1:-1:-1;;3596:20:4;;;;;3562:65;1854:6:21::1;:36:::0;;-1:-1:-1;;;;;;1854:36:21::1;::::0;-1:-1:-1;;;;;1854:36:21;::::1;;;::::0;;1900:140:::1;1924:23;:30;1920:1;:34;1900:140;;;2025:4;1975:19:::0;:47:::1;1995:23;2019:1;1995:26;;;;;;-1:-1:-1::0;;;1995:26:21::1;;;;;;;;;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;;1975:47:21::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;1975:47:21;:54;;-1:-1:-1;;1975:54:21::1;::::0;::::1;;::::0;;;::::1;::::0;;1956:3;::::1;::::0;::::1;:::i;:::-;;;;1900:140;;;;3651:14:4::0;3647:99;;;3697:5;3681:21;;-1:-1:-1;;3681:21:4;;;3721:14;;-1:-1:-1;19733:36:23;;3721:14:4;;19721:2:23;19706:18;3721:14:4;;;;;;;3647:99;1747:299:21;;;:::o;2743:253::-;2901:88;2925:6;2933:7;2942;2951:8;2961:7;2970:6;2978:10;2901:23;:88::i;3987:323::-;4207:96;4224:14;4240:18;4260:6;4268:5;4275:7;4284:6;4292:10;4207:16;:96::i;5691:299::-;5793:6;;;;;;;;;-1:-1:-1;;;;;5793:6:21;-1:-1:-1;;;;;5793:13:21;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;5779:29:21;:10;-1:-1:-1;;;;;5779:29:21;;5771:63;;;;-1:-1:-1;;;5771:63:21;;;;;;;:::i;:::-;5849:9;5844:140;5868:23;:30;5864:1;:34;5844:140;;;5969:4;5919:19;:47;5939:23;5963:1;5939:26;;;;;;-1:-1:-1;;;5939:26:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;5919:47:21;;;;;;;;;;;-1:-1:-1;5919:47:21;:54;;-1:-1:-1;;5919:54:21;;;;;;;;;;5900:3;;;;:::i;:::-;;;;5844:140;;4316:458;4629:22;;;4640:10;4629:22;;;14070:51:23;4574:16:21;;4593:70;;14043:18:23;4629:22:21;14025:102:23;4593:70:21;4574:89;;4673:94;4690:14;4706:18;4726:6;4734:5;4741:7;4750:6;4758:8;4673:16;:94::i;1067:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1067:65:21;;;;;;;-1:-1:-1;;1067:65:21;;;:::o;9537:598::-;9640:7;9659:24;9686:49;9720:14;9686:33;:49::i;:::-;9749:11;;;:57;;-1:-1:-1;;;9749:57:21;;9659:76;;-1:-1:-1;;;;;;9749:11:21;;:35;;:57;;9785:8;;9659:76;;9749:57;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9749:57:21;;;;;;;;-1:-1:-1;;9749:57:21;;;;;;;;;;;;:::i;:::-;;;9745:357;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;9929:78;9937:6;9929:78;;;;;;;;;;;;;;;;;:7;:78::i;:::-;10009:6;9921:95;;;;;-1:-1:-1;;;9921:95:21;;;;;;;;:::i;:::-;;10038:5;10045:45;10079:10;10045:33;:45::i;:::-;10030:61;;;;;-1:-1:-1;;;10030:61:21;;;;;;;;:::i;:::-;;9873:229;9745:357;;;;;;;;;;;;;9854:7;-1:-1:-1;9847:14:21;;-1:-1:-1;9847:14:21;9745:357;-1:-1:-1;10126:1:21;;9537:598;-1:-1:-1;;;9537:598:21:o;2052:241::-;2138:11;;-1:-1:-1;;;;;2138:11:21;2130:34;;:72;;-1:-1:-1;2182:11:21;;;:20;;;-1:-1:-1;;;2182:20:21;;;;-1:-1:-1;;;;;2182:11:21;;;;:18;;:20;;;;;;;;;;;;:11;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2168:34:21;:10;-1:-1:-1;;;;;2168:34:21;;2130:72;2122:115;;;;-1:-1:-1;;;2122:115:21;;20206:2:23;2122:115:21;;;20188:21:23;20245:2;20225:18;;;20218:30;20284:32;20264:18;;;20257:60;20334:18;;2122:115:21;20178:180:23;2122:115:21;2247:11;:39;;-1:-1:-1;;;;;;2247:39:21;-1:-1:-1;;;;;2247:39:21;;;;;;;;;;2052:241::o;6749:1186::-;6851:27;6890:35;6966:13;:20;-1:-1:-1;;;;;6928:68:21;;;;;-1:-1:-1;;;6928:68:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6928:68:21;;-1:-1:-1;;6928:68:21;;;;;;;;;;;;6890:106;;7011:9;7006:899;7030:13;:20;7026:1;:24;7006:899;;;7079:5;:33;7085:13;7099:1;7085:16;;;;;;-1:-1:-1;;;7085:16:21;;;;;;;;;;;;;;;:26;;;-1:-1:-1;;;;;7079:33:21;-1:-1:-1;;;;;7079:33:21;;;;;;;;;;;;:58;7113:13;7127:1;7113:16;;;;;;-1:-1:-1;;;7113:16:21;;;;;;;;;;;;;;;;;;;;:23;;;7079:58;;;;;;;;;;-1:-1:-1;7079:58:21;:63;;;;;7071:92;;;;-1:-1:-1;;;7071:92:21;;21679:2:23;7071:92:21;;;21661:21:23;21718:2;21698:18;;;21691:30;-1:-1:-1;;;21737:18:23;;;21730:46;21793:18;;7071:92:21;21651:166:23;7071:92:21;7185:9;:37;7195:13;7209:1;7195:16;;;;;;-1:-1:-1;;;7195:16:21;;;;;;;;;;;;;;;:26;;;-1:-1:-1;;;;;7185:37:21;-1:-1:-1;;;;;7185:37:21;;;;;;;;;;;;:62;7223:13;7237:1;7223:16;;;;;;-1:-1:-1;;;7223:16:21;;;;;;;;;;;;;;;:23;;;7185:62;;;;;;;;;;;:86;7248:13;7262:1;7248:16;;;;;;-1:-1:-1;;;7248:16:21;;;;;;;;;;;;;;;;;;;;:22;;;;;7185:86;;;;;;;;;;;;-1:-1:-1;7185:86:21;:91;;;;;7177:118;;;;-1:-1:-1;;;7177:118:21;;23492:2:23;7177:118:21;;;23474:21:23;23531:2;23511:18;;;23504:30;-1:-1:-1;;;23550:18:23;;;23543:44;23604:18;;7177:118:21;23464:164:23;7177:118:21;7330:5;:33;7336:13;7350:1;7336:16;;;;;;-1:-1:-1;;;7336:16:21;;;;;;;;;;;;;;;:26;;;-1:-1:-1;;;;;7330:33:21;-1:-1:-1;;;;;7330:33:21;;;;;;;;;;;;:58;7364:13;7378:1;7364:16;;;;;;-1:-1:-1;;;7364:16:21;;;;;;;;;;;;;;;:23;;;7330:58;;;;;;;;;;;:66;;;;;;;;;;;;7309:7;7317:1;7309:10;;;;;;-1:-1:-1;;;7309:10:21;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;7309:87:21;;;;;7448:16;;7438:9;;7309:18;;7448:13;;7462:1;;7448:16;;;;-1:-1:-1;;;7448:16:21;;;;;;;;;;;;;;;:26;;;-1:-1:-1;;;;;7438:37:21;-1:-1:-1;;;;;7438:37:21;;;;;;;;;;;;:62;7476:13;7490:1;7476:16;;;;;;-1:-1:-1;;;7476:16:21;;;;;;;;;;;;;;;:23;;;7438:62;;;;;;;;;;;:86;7501:13;7515:1;7501:16;;;;;;-1:-1:-1;;;7501:16:21;;;;;;;;;;;;;;;:22;;;7438:86;;;;;;;;;;;;;;;:101;;;;;;;;;;;;7410:7;7418:1;7410:10;;;;;;-1:-1:-1;;;7410:10:21;;;;;;;;;;;;;;;:25;;:129;-1:-1:-1;;;;;7410:129:21;;;;-1:-1:-1;;;;;7410:129:21;;;;;;7574:5;:33;7580:13;7594:1;7580:16;;;;;;-1:-1:-1;;;7580:16:21;;;;;;;;;;;;;;;:26;;;-1:-1:-1;;;;;7574:33:21;-1:-1:-1;;;;;7574:33:21;;;;;;;;;;;;:58;7608:13;7622:1;7608:16;;;;;;-1:-1:-1;;;7608:16:21;;;;;;;;;;;;;;;:23;;;7574:58;;;;;;;;;;;:66;;;;;;;;;;;;7553:7;7561:1;7553:10;;;;;;-1:-1:-1;;;7553:10:21;;;;;;;;;;;;;;;:18;;:87;-1:-1:-1;;;;;7553:87:21;;;;-1:-1:-1;;;;;7553:87:21;;;;;;7686:9;:37;7696:13;7710:1;7696:16;;;;;;-1:-1:-1;;;7696:16:21;;;;;;;;;;;;;;;:26;;;-1:-1:-1;;;;;7686:37:21;-1:-1:-1;;;;;7686:37:21;;;;;;;;;;;;:62;7724:13;7738:1;7724:16;;;;;;-1:-1:-1;;;7724:16:21;;;;;;;;;;;;;;;:23;;;7686:62;;;;;;;;;;;:86;7749:13;7763:1;7749:16;;;;;;-1:-1:-1;;;7749:16:21;;;;;;;;;;;;;;;:22;;;7686:86;;;;;;;;;;;;;;;:105;;7654:137;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:7;7662:1;7654:10;;;;;;-1:-1:-1;;;7654:10:21;;;;;;;;;;;;;;;:29;;:137;;;;7827:5;:33;7833:13;7847:1;7833:16;;;;;;-1:-1:-1;;;7833:16:21;;;;;;;;;;;;;;;:26;;;-1:-1:-1;;;;;7827:33:21;-1:-1:-1;;;;;7827:33:21;;;;;;;;;;;;:58;7861:13;7875:1;7861:16;;;;;;-1:-1:-1;;;7861:16:21;;;;;;;;;;;;;;;:23;;;7827:58;;;;;;;;;;;:67;;7805:89;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:7;7813:1;7805:10;;;;;;-1:-1:-1;;;7805:10:21;;;;;;;;;;;;;;;:19;;:89;;;;7052:3;;;;;:::i;:::-;;;;7006:899;;;-1:-1:-1;7921:7:21;6749:1186;-1:-1:-1;;6749:1186:21:o;6448:295::-;6533:4;;6548:168;6572:7;:14;6568:1;:18;6548:168;;;6612:47;6633:7;6641:1;6633:10;;;;;;-1:-1:-1;;;6633:10:21;;;;;;;;;;;;;;;:25;;;-1:-1:-1;;;;;;6400:35:21;6378:4;6400:35;;;:19;:35;;;;;;;;;6304:138;6612:47;6607:99;;-1:-1:-1;6686:5:21;;6448:295;-1:-1:-1;;6448:295:21:o;6607:99::-;6588:3;;;;:::i;:::-;;;;6548:168;;;-1:-1:-1;6732:4:21;;6448:295;-1:-1:-1;;6448:295:21:o;546:306:19:-;179:19;;;;;;662:7;;738:9;749;760:7;771:26;786:10;771:14;:26::i;:::-;814:31;;;;;;;;;;;;19405:25:23;;;19478:4;19466:17;;19446:18;;;19439:45;;;;19500:18;;;19493:34;;;19543:18;;;19536:34;;;737:60:19;;-1:-1:-1;737:60:19;;-1:-1:-1;737:60:19;-1:-1:-1;814:31:19;;19377:19:23;;814:31:19;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;814:31:19;;-1:-1:-1;;814:31:19;;;546:306;-1:-1:-1;;;;;;;;546:306:19:o;8989:542:21:-;9218:35;9256:26;9268:13;9256:11;:26::i;:::-;9218:64;;9301:25;9318:7;9301:16;:25::i;:::-;9300:26;9292:64;;;;-1:-1:-1;;;9292:64:21;;22439:2:23;9292:64:21;;;22421:21:23;22478:2;22458:18;;;22451:30;22517:27;22497:18;;;22490:55;22562:18;;9292:64:21;22411:175:23;9292:64:21;9366:15;9384:6;;:27;;-1:-1:-1;;;9384:27:21;;-1:-1:-1;;;;;14088:32:23;;;9384:27:21;;;14070:51:23;9384:6:21;;;;;;;;:17;;14043:18:23;;9384:27:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9421:6;;:58;;-1:-1:-1;;;9421:58:21;;9366:45;;-1:-1:-1;9421:6:21;;;-1:-1:-1;;;;;9421:6:21;;:11;;:58;;9366:45;;9442:7;;9451:6;;9459:9;;9470:8;;9421:58;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9494:30;9516:7;9494:30;;;;;;:::i;:::-;;;;;;;;8989:542;;;;;;;:::o;3388:593::-;3591:11;;;:35;;-1:-1:-1;;;3591:35:21;;-1:-1:-1;;;;;14088:32:23;;;3591:35:21;;;14070:51:23;;;;3573:15:21;;3591:11;;;;:25;;14043:18:23;;3591:35:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;3645:14:21;;;;;;:5;:14;;;;;;;;:22;;;;;;;;;:27;;3573:53;;-1:-1:-1;3645:27:21;;3644:28;3636:61;;;;-1:-1:-1;;;3636:61:21;;23143:2:23;3636:61:21;;;23125:21:23;23182:2;23162:18;;;23155:30;-1:-1:-1;;;23201:18:23;;;23194:50;23261:18;;3636:61:21;23115:170:23;3636:61:21;-1:-1:-1;;;;;3738:14:21;;3707:28;3738:14;;;:5;:14;;;;;;;;:22;;;;;;;;3770:25;;;3805;;;;;-1:-1:-1;;3805:25:21;;;3770;;;;3805;;;;3840:27;;3738:22;;3840:27;;3770:25;3840:16;;;:27;;;;:::i;:::-;-1:-1:-1;3877:12:21;;;:19;;-1:-1:-1;;3877:19:21;3892:4;3877:19;;;3911:63;;;;;;3931:7;;3940:8;;3950:6;;3958:7;;3967:6;;3911:63;:::i;:::-;;;;;;;;3388:593;;;;;;;;;:::o;4780:905::-;5035:15;5053:57;5085:8;5095:14;5053:31;:57::i;:::-;5035:75;;5136:5;5128;:13;;;5120:39;;;;-1:-1:-1;;;5120:39:21;;20565:2:23;5120:39:21;;;20547:21:23;20604:2;20584:18;;;20577:30;-1:-1:-1;;;20623:18:23;;;20616:43;20676:18;;5120:39:21;20537:163:23;5120:39:21;-1:-1:-1;;;;;5178:18:21;;;;;;:9;:18;;;;;;;;:26;;;;;;;;:33;;;;;;;;;;:38;;;;;5177:39;5169:70;;;;-1:-1:-1;;;5169:70:21;;23835:2:23;5169:70:21;;;23817:21:23;23874:2;23854:18;;;23847:30;-1:-1:-1;;;23893:18:23;;;23886:48;23951:18;;5169:70:21;23807:168:23;5169:70:21;-1:-1:-1;;;;;5257:14:21;;;;;;:5;:14;;;;;;;;:22;;;;;;;;;:27;;;;5249:61;;;;-1:-1:-1;;;5249:61:21;;21329:2:23;5249:61:21;;;21311:21:23;21368:2;21348:18;;;21341:30;-1:-1:-1;;;21387:18:23;;;21380:51;21448:18;;5249:61:21;21301:171:23;5249:61:21;-1:-1:-1;;;;;5361:18:21;;5320:38;5361:18;;;:9;:18;;;;;;;;:26;;;;;;;;:33;;;;;;;;;;5404:46;;-1:-1:-1;;5404:46:21;;;;;;;;5460:54;;5361:33;;5460:54;;-1:-1:-1;5460:33:21;;;:54;;;;:::i;:::-;-1:-1:-1;5524:19:21;;;;:26;;-1:-1:-1;;5524:26:21;5546:4;5524:26;;;;;;-1:-1:-1;;;;;5598:14:21;;5524:19;5598:14;;;;;;;;;;;:22;;;;;;;;;5565:113;;;;;;5589:7;;5598:31;;;5613:6;;5639:14;;5655:5;;5662:7;;5671:6;;5565:113;:::i;10141:5266::-;10254:60;;;;;;;;;;;-1:-1:-1;;;10254:60:21;;;;;;;;10324:76;;;;;;;;;;-1:-1:-1;;;10324:76:21;;;;10410:74;;;;;;;;;;;-1:-1:-1;;;10410:74:21;;;;;;;10229:13;;10254:60;-1:-1:-1;;;;;;;;;10568:24:21;;;10564:4772;;;-1:-1:-1;10602:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;10564:4772::-;-1:-1:-1;;;;;;;;;10669:24:21;;;10665:4671;;;-1:-1:-1;10703:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;10665:4671::-;-1:-1:-1;;;;;;;;;10774:24:21;;;10770:4566;;;-1:-1:-1;10808:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;10770:4566::-;-1:-1:-1;;;;;;;;;10879:24:21;;;10875:4461;;;-1:-1:-1;10913:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;10875:4461::-;-1:-1:-1;;;;;;;;;10975:24:21;;;10971:4365;;;-1:-1:-1;11009:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;10971:4365::-;-1:-1:-1;;;;;;;;;11075:24:21;;;11071:4265;;;-1:-1:-1;11109:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;11071:4265::-;-1:-1:-1;;;;;;;;;11179:24:21;;;11175:4161;;;-1:-1:-1;11213:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;11175:4161::-;-1:-1:-1;;;;;;;;;11287:24:21;;;11283:4053;;;-1:-1:-1;11321:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;11283:4053::-;-1:-1:-1;;;;;;;;;11395:24:21;;;11391:3945;;;-1:-1:-1;11429:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;11391:3945::-;-1:-1:-1;;;;;;;;;11492:24:21;;;11488:3848;;;-1:-1:-1;11526:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;11488:3848::-;-1:-1:-1;;;;;;;;;11603:24:21;;;11599:3737;;;-1:-1:-1;11637:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;11599:3737::-;-1:-1:-1;;;;;;;;;11714:24:21;;;11710:3626;;;-1:-1:-1;11748:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;11710:3626::-;-1:-1:-1;;;;;;;;;11825:24:21;;;11821:3515;;;-1:-1:-1;11859:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;11821:3515::-;-1:-1:-1;;;;;;;;;11936:24:21;;;11932:3404;;;-1:-1:-1;11970:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;11932:3404::-;-1:-1:-1;;;;;;;;;12049:24:21;;;12045:3291;;;-1:-1:-1;12083:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;12045:3291::-;-1:-1:-1;;;;;;;;;12162:24:21;;;12158:3178;;;-1:-1:-1;12196:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;12158:3178::-;-1:-1:-1;;;;;;;;;12278:24:21;;;12274:3062;;;-1:-1:-1;12312:33:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;12274:3062::-;-1:-1:-1;;;;;;;;;12395:24:21;;;12391:2945;;;-1:-1:-1;12429:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;12391:2945::-;-1:-1:-1;;;;;;;;;12501:24:21;;;12497:2839;;;-1:-1:-1;12535:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;12497:2839::-;-1:-1:-1;;;;;;;;;12621:24:21;;;12617:2719;;;-1:-1:-1;12655:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;12617:2719::-;-1:-1:-1;;;;;;;;;12741:24:21;;;12737:2599;;;-1:-1:-1;12775:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;12737:2599::-;-1:-1:-1;;;;;;;;;12863:24:21;;;12859:2477;;;-1:-1:-1;12897:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;12859:2477::-;-1:-1:-1;;;;;;;;;12985:24:21;;;12981:2355;;;-1:-1:-1;13019:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;12981:2355::-;-1:-1:-1;;;;;;;;;13100:24:21;;;13096:2240;;;-1:-1:-1;13134:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;13096:2240::-;-1:-1:-1;;;;;;;;;13215:24:21;;;13211:2125;;;-1:-1:-1;13249:32:21;10141:5266;-1:-1:-1;;;;10141:5266:21:o;13211:2125::-;-1:-1:-1;;;;;;;;;13318:24:21;;;13314:2022;;;-1:-1:-1;13352:32:21;10141:5266;-1:-1:-1;;;;10141:5266:21:o;13314:2022::-;-1:-1:-1;;;;;;;;;13425:24:21;;;13421:1915;;;-1:-1:-1;13459:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;13421:1915::-;-1:-1:-1;;;;;;;;;13537:24:21;;;13533:1803;;;-1:-1:-1;13571:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;13533:1803::-;-1:-1:-1;;;;;;;;;13649:24:21;;;13645:1691;;;-1:-1:-1;13683:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;13645:1691::-;-1:-1:-1;;;;;;;;;13758:24:21;;;13754:1582;;;-1:-1:-1;13792:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;13754:1582::-;-1:-1:-1;;;;;;;;;13867:24:21;;;13863:1473;;;-1:-1:-1;13901:33:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;13863:1473::-;-1:-1:-1;;;;;;;;;13976:24:21;;;13972:1364;;;-1:-1:-1;14010:33:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;13972:1364::-;-1:-1:-1;;;;;;;;;14089:24:21;;;14085:1251;;;-1:-1:-1;14123:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;14085:1251::-;-1:-1:-1;;;;;;;;;14191:24:21;;;14187:1149;;;-1:-1:-1;14225:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;14187:1149::-;-1:-1:-1;;;;;;;;;14293:24:21;;;14289:1047;;;-1:-1:-1;14327:33:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;14289:1047::-;-1:-1:-1;;;;;;;;;14410:24:21;;;14406:930;;;-1:-1:-1;14444:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;14406:930::-;-1:-1:-1;;;;;;;;;14520:24:21;;;14516:820;;;-1:-1:-1;14554:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;14516:820::-;-1:-1:-1;;;;;;;;;14624:24:21;;;14620:716;;;-1:-1:-1;14658:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;14620:716::-;-1:-1:-1;;;;;;;;;14728:24:21;;;14724:612;;;-1:-1:-1;14762:33:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;14724:612::-;-1:-1:-1;;;;;;;;;14839:24:21;;;14835:501;;;-1:-1:-1;14873:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;14835:501::-;-1:-1:-1;;;;;;;;;14952:24:21;;;14948:388;;;-1:-1:-1;14986:32:21;10141:5266;-1:-1:-1;;;;10141:5266:21:o;14948:388::-;-1:-1:-1;;;;;;;;;15055:24:21;;;15051:285;;;-1:-1:-1;15089:32:21;10141:5266;-1:-1:-1;;;;10141:5266:21:o;15051:285::-;-1:-1:-1;;;;;;;;;15162:24:21;;;15158:178;;;-1:-1:-1;15196:25:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;15158:178::-;-1:-1:-1;;;;;;;;;15267:24:21;;;15263:73;;;-1:-1:-1;15301:33:21;;10141:5266;-1:-1:-1;;;;10141:5266:21:o;15263:73::-;15382:18;10141:5266;-1:-1:-1;;;;;10141:5266:21:o;15413:686::-;15504:13;15533:39;15541:10;15533:39;;;;;;;;;;;;;-1:-1:-1;;;15533:39:21;;;:7;:39::i;:::-;15529:477;;;15588:75;;;;;;;;;;;;;;;;;;15413:686;-1:-1:-1;;15413:686:21:o;15529:477::-;15684:47;15692:10;15684:47;;;;;;;;;;;;;-1:-1:-1;;;15684:47:21;;;:7;:47::i;:::-;15680:326;;;15747:83;;;;;;;;;;;;;;;;;;15413:686;-1:-1:-1;;15413:686:21:o;15680:326::-;15851:46;15859:10;15851:46;;;;;;;;;;;;;-1:-1:-1;;;15851:46:21;;;:7;:46::i;:::-;15847:159;;;15913:82;;;;;;;;;;;;;;;;;;15413:686;-1:-1:-1;;15413:686:21:o;15847:159::-;16015:77;;;;;;;;;;;;;;;;;;15413:686;-1:-1:-1;;15413:686:21:o;211:329:19:-;289:9;300;311:7;338:3;:10;352:2;338:16;330:53;;;;-1:-1:-1;;;330:53:19;;24182:2:23;330:53:19;;;24164:21:23;24221:2;24201:18;;;24194:30;24260:26;24240:18;;;24233:54;24304:18;;330:53:19;24154:174:23;330:53:19;-1:-1:-1;;;437:2:19;428:12;;422:19;474:2;465:12;;459:19;519:2;510:12;;;504:19;422;;501:1;496:28;;;;;403:131::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:758:23;67:5;120:3;113:4;105:6;101:17;97:27;87:2;;142:5;135;128:20;87:2;182:6;169:20;208:4;231:42;270:2;231:42;:::i;:::-;302:2;296:9;314:31;342:2;334:6;314:31;:::i;:::-;380:18;;;414:15;;;;-1:-1:-1;449:15:23;;;499:1;495:10;;;483:23;;479:32;;476:41;-1:-1:-1;473:2:23;;;534:5;527;520:20;473:2;560:5;574:168;588:2;585:1;582:9;574:168;;;645:22;663:3;645:22;:::i;:::-;633:35;;688:12;;;;720;;;;606:1;599:9;574:168;;;-1:-1:-1;760:6:23;;77:695;-1:-1:-1;;;;;;;77:695:23:o;777:1218::-;851:5;904:3;897:4;889:6;885:17;881:27;871:2;;926:5;919;912:20;871:2;966:6;953:20;992:4;1015:42;1054:2;1015:42;:::i;:::-;1076:2;1107;1101:9;1119:31;1147:2;1139:6;1119:31;:::i;:::-;1185:18;;;1219:15;;;;-1:-1:-1;1254:15:23;;;1288:4;1323:11;;;1311:24;;1307:33;;1304:42;-1:-1:-1;1301:2:23;;;1363:5;1356;1349:20;1301:2;1389:5;1403:562;1417:2;1414:1;1411:9;1403:562;;;1484:2;1478:3;1473;1469:13;1465:22;1462:2;;;1504:5;1497;1490:20;1462:2;1547;1541:9;1563:34;1588:8;1563:34;:::i;:::-;1636:3;1623:17;1653:31;1678:5;1653:31;:::i;:::-;1697:23;;1772:12;;;1759:26;1740:17;;;1733:53;1825:31;1843:12;;;1825:31;:::i;:::-;1806:17;;;1799:58;1870:21;;1911:12;;;;1943;;;;1435:1;1428:9;1403:562;;;-1:-1:-1;1983:6:23;;861:1134;-1:-1:-1;;;;;;;;;861:1134:23:o;2000:168::-;2067:20;;-1:-1:-1;;;;;;2116:27:23;;2106:38;;2096:2;;2158:1;2155;2148:12;2096:2;2048:120;;;:::o;2173:575::-;2215:5;2268:3;2261:4;2253:6;2249:17;2245:27;2235:2;;2290:5;2283;2276:20;2235:2;2330:6;2317:20;-1:-1:-1;;;;;2352:2:23;2349:26;2346:2;;;2378:18;;:::i;:::-;2427:2;2421:9;2439:67;2494:2;2475:13;;-1:-1:-1;;2471:27:23;2500:4;2467:38;2421:9;2439:67;:::i;:::-;2530:2;2522:6;2515:18;2576:3;2569:4;2564:2;2556:6;2552:15;2548:26;2545:35;2542:2;;;2597:5;2590;2583:20;2542:2;2665;2658:4;2650:6;2646:17;2639:4;2631:6;2627:17;2614:54;2688:15;;;2705:4;2684:26;2677:41;;;;2692:6;2225:523;-1:-1:-1;;2225:523:23:o;2753:163::-;2820:20;;2880:10;2869:22;;2859:33;;2849:2;;2906:1;2903;2896:12;2921:257;2980:6;3033:2;3021:9;3012:7;3008:23;3004:32;3001:2;;;3054:6;3046;3039:22;3001:2;3098:9;3085:23;3117:31;3142:5;3117:31;:::i;:::-;3167:5;2991:187;-1:-1:-1;;;2991:187:23:o;3183:261::-;3253:6;3306:2;3294:9;3285:7;3281:23;3277:32;3274:2;;;3327:6;3319;3312:22;3274:2;3364:9;3358:16;3383:31;3408:5;3383:31;:::i;3449:501::-;3541:6;3549;3602:2;3590:9;3581:7;3577:23;3573:32;3570:2;;;3623:6;3615;3608:22;3570:2;3667:9;3654:23;3686:31;3711:5;3686:31;:::i;:::-;3736:5;-1:-1:-1;3792:2:23;3777:18;;3764:32;-1:-1:-1;;;;;3808:30:23;;3805:2;;;3856:6;3848;3841:22;3805:2;3884:60;3936:7;3927:6;3916:9;3912:22;3884:60;:::i;:::-;3874:70;;;3560:390;;;;;:::o;3955:329::-;4022:6;4030;4083:2;4071:9;4062:7;4058:23;4054:32;4051:2;;;4104:6;4096;4089:22;4051:2;4148:9;4135:23;4167:31;4192:5;4167:31;:::i;:::-;4217:5;-1:-1:-1;4241:37:23;4274:2;4259:18;;4241:37;:::i;:::-;4231:47;;4041:243;;;;;:::o;4289:325::-;4357:6;4365;4418:2;4406:9;4397:7;4393:23;4389:32;4386:2;;;4439:6;4431;4424:22;4386:2;4483:9;4470:23;4502:31;4527:5;4502:31;:::i;:::-;4552:5;4604:2;4589:18;;;;4576:32;;-1:-1:-1;;;4376:238:23:o;4619:366::-;4702:6;4755:2;4743:9;4734:7;4730:23;4726:32;4723:2;;;4776:6;4768;4761:22;4723:2;4821:9;4808:23;-1:-1:-1;;;;;4846:6:23;4843:30;4840:2;;;4891:6;4883;4876:22;4840:2;4919:60;4971:7;4962:6;4951:9;4947:22;4919:60;:::i;:::-;4909:70;4713:272;-1:-1:-1;;;;4713:272:23:o;4990:426::-;5112:6;5165:2;5153:9;5144:7;5140:23;5136:32;5133:2;;;5186:6;5178;5171:22;5133:2;5231:9;5218:23;-1:-1:-1;;;;;5256:6:23;5253:30;5250:2;;;5301:6;5293;5286:22;5250:2;5329:81;5402:7;5393:6;5382:9;5378:22;5329:81;:::i;5421:1075::-;5600:6;5608;5616;5624;5677:3;5665:9;5656:7;5652:23;5648:33;5645:2;;;5699:6;5691;5684:22;5645:2;5744:9;5731:23;-1:-1:-1;;;;;5814:2:23;5806:6;5803:14;5800:2;;;5835:6;5827;5820:22;5800:2;5863:81;5936:7;5927:6;5916:9;5912:22;5863:81;:::i;:::-;5853:91;;5997:2;5986:9;5982:18;5969:32;5953:48;;6026:2;6016:8;6013:16;6010:2;;;6047:6;6039;6032:22;6010:2;6075:51;6118:7;6107:8;6096:9;6092:24;6075:51;:::i;:::-;6065:61;;6179:2;6168:9;6164:18;6151:32;6135:48;;6208:2;6198:8;6195:16;6192:2;;;6229:6;6221;6214:22;6192:2;6257:51;6300:7;6289:8;6278:9;6274:24;6257:51;:::i;:::-;6247:61;;6361:2;6350:9;6346:18;6333:32;6317:48;;6390:2;6380:8;6377:16;6374:2;;;6411:6;6403;6396:22;6374:2;;6439:51;6482:7;6471:8;6460:9;6456:24;6439:51;:::i;:::-;6429:61;;;5635:861;;;;;;;:::o;6501:1284::-;6698:6;6706;6714;6722;6730;6783:3;6771:9;6762:7;6758:23;6754:33;6751:2;;;6805:6;6797;6790:22;6751:2;6850:9;6837:23;-1:-1:-1;;;;;6920:2:23;6912:6;6909:14;6906:2;;;6941:6;6933;6926:22;6906:2;6969:81;7042:7;7033:6;7022:9;7018:22;6969:81;:::i;:::-;6959:91;;7103:2;7092:9;7088:18;7075:32;7059:48;;7132:2;7122:8;7119:16;7116:2;;;7153:6;7145;7138:22;7116:2;7181:51;7224:7;7213:8;7202:9;7198:24;7181:51;:::i;:::-;7171:61;;7285:2;7274:9;7270:18;7257:32;7241:48;;7314:2;7304:8;7301:16;7298:2;;;7335:6;7327;7320:22;7298:2;7363:51;7406:7;7395:8;7384:9;7380:24;7363:51;:::i;:::-;7353:61;;7467:2;7456:9;7452:18;7439:32;7423:48;;7496:2;7486:8;7483:16;7480:2;;;7517:6;7509;7502:22;7480:2;7545:51;7588:7;7577:8;7566:9;7562:24;7545:51;:::i;:::-;7535:61;;7649:3;7638:9;7634:19;7621:33;7605:49;;7679:2;7669:8;7666:16;7663:2;;;7700:6;7692;7685:22;7663:2;;7728:51;7771:7;7760:8;7749:9;7745:24;7728:51;:::i;:::-;7718:61;;;6741:1044;;;;;;;;:::o;7790:194::-;7848:6;7901:2;7889:9;7880:7;7876:23;7872:32;7869:2;;;7922:6;7914;7907:22;7869:2;7950:28;7968:9;7950:28;:::i;7989:994::-;8120:6;8128;8136;8144;8152;8160;8213:3;8201:9;8192:7;8188:23;8184:33;8181:2;;;8235:6;8227;8220:22;8181:2;8263:28;8281:9;8263:28;:::i;:::-;8253:38;;8342:2;8331:9;8327:18;8314:32;-1:-1:-1;;;;;8406:2:23;8398:6;8395:14;8392:2;;;8427:6;8419;8412:22;8392:2;8455:49;8496:7;8487:6;8476:9;8472:22;8455:49;:::i;:::-;8445:59;;8551:2;8540:9;8536:18;8523:32;8513:42;;8574:37;8607:2;8596:9;8592:18;8574:37;:::i;:::-;8564:47;;8664:3;8653:9;8649:19;8636:33;8620:49;;8694:2;8684:8;8681:16;8678:2;;;8715:6;8707;8700:22;8678:2;8743:51;8786:7;8775:8;8764:9;8760:24;8743:51;:::i;:::-;8733:61;;8847:3;8836:9;8832:19;8819:33;8803:49;;8877:2;8867:8;8864:16;8861:2;;;8898:6;8890;8883:22;8861:2;;8926:51;8969:7;8958:8;8947:9;8943:24;8926:51;:::i;:::-;8916:61;;;8171:812;;;;;;;;:::o;8988:1203::-;9137:6;9145;9153;9161;9169;9177;9185;9238:3;9226:9;9217:7;9213:23;9209:33;9206:2;;;9260:6;9252;9245:22;9206:2;9288:28;9306:9;9288:28;:::i;:::-;9278:38;;9367:2;9356:9;9352:18;9339:32;-1:-1:-1;;;;;9431:2:23;9423:6;9420:14;9417:2;;;9452:6;9444;9437:22;9417:2;9480:49;9521:7;9512:6;9501:9;9497:22;9480:49;:::i;:::-;9470:59;;9576:2;9565:9;9561:18;9548:32;9538:42;;9599:37;9632:2;9621:9;9617:18;9599:37;:::i;:::-;9589:47;;9689:3;9678:9;9674:19;9661:33;9645:49;;9719:2;9709:8;9706:16;9703:2;;;9740:6;9732;9725:22;9703:2;9768:51;9811:7;9800:8;9789:9;9785:24;9768:51;:::i;:::-;9758:61;;9872:3;9861:9;9857:19;9844:33;9828:49;;9902:2;9892:8;9889:16;9886:2;;;9923:6;9915;9908:22;9886:2;9951:51;9994:7;9983:8;9972:9;9968:24;9951:51;:::i;:::-;9941:61;;10055:3;10044:9;10040:19;10027:33;10011:49;;10085:2;10075:8;10072:16;10069:2;;;10106:6;10098;10091:22;10069:2;;10134:51;10177:7;10166:8;10155:9;10151:24;10134:51;:::i;:::-;10124:61;;;9196:995;;;;;;;;;;:::o;10196:571::-;10284:6;10292;10345:2;10333:9;10324:7;10320:23;10316:32;10313:2;;;10366:6;10358;10351:22;10313:2;10411:9;10398:23;-1:-1:-1;;;;;10481:2:23;10473:6;10470:14;10467:2;;;10502:6;10494;10487:22;10467:2;10530:49;10571:7;10562:6;10551:9;10547:22;10530:49;:::i;:::-;10520:59;;10632:2;10621:9;10617:18;10604:32;10588:48;;10661:2;10651:8;10648:16;10645:2;;;10682:6;10674;10667:22;10645:2;;10710:51;10753:7;10742:8;10731:9;10727:24;10710:51;:::i;10772:194::-;10842:6;10895:2;10883:9;10874:7;10870:23;10866:32;10863:2;;;10916:6;10908;10901:22;10863:2;-1:-1:-1;10944:16:23;;10853:113;-1:-1:-1;10853:113:23:o;10971:994::-;11102:6;11110;11118;11126;11134;11142;11195:3;11183:9;11174:7;11170:23;11166:33;11163:2;;;11217:6;11209;11202:22;11163:2;11258:9;11245:23;11235:33;;11287:37;11320:2;11309:9;11305:18;11287:37;:::i;:::-;11277:47;;11343:37;11376:2;11365:9;11361:18;11343:37;:::i;:::-;11333:47;;11431:2;11420:9;11416:18;11403:32;-1:-1:-1;;;;;11495:2:23;11487:6;11484:14;11481:2;;;11516:6;11508;11501:22;11481:2;11544:49;11585:7;11576:6;11565:9;11561:22;11544:49;:::i;:::-;11534:59;;11646:3;11635:9;11631:19;11618:33;11602:49;;11676:2;11666:8;11663:16;11660:2;;;11697:6;11689;11682:22;11970:1203;12119:6;12127;12135;12143;12151;12159;12167;12220:3;12208:9;12199:7;12195:23;12191:33;12188:2;;;12242:6;12234;12227:22;12188:2;12283:9;12270:23;12260:33;;12312:37;12345:2;12334:9;12330:18;12312:37;:::i;:::-;12302:47;;12368:37;12401:2;12390:9;12386:18;12368:37;:::i;:::-;12358:47;;12456:2;12445:9;12441:18;12428:32;-1:-1:-1;;;;;12520:2:23;12512:6;12509:14;12506:2;;;12541:6;12533;12526:22;12506:2;12569:49;12610:7;12601:6;12590:9;12586:22;12569:49;:::i;13282:257::-;13323:3;13361:5;13355:12;13388:6;13383:3;13376:19;13404:63;13460:6;13453:4;13448:3;13444:14;13437:4;13430:5;13426:16;13404:63;:::i;:::-;13521:2;13500:15;-1:-1:-1;;13496:29:23;13487:39;;;;13528:4;13483:50;;13331:208;-1:-1:-1;;13331:208:23:o;13643:276::-;13774:3;13812:6;13806:13;13828:53;13874:6;13869:3;13862:4;13854:6;13850:17;13828:53;:::i;:::-;13897:16;;;;;13782:137;-1:-1:-1;;13782:137:23:o;14132:712::-;-1:-1:-1;;;;;14431:32:23;;14413:51;;14451:3;14495:2;14480:18;;14473:31;;;-1:-1:-1;;14527:45:23;;14552:19;;14544:6;14527:45;:::i;:::-;14608:6;14603:2;14592:9;14588:18;14581:34;14663:9;14655:6;14651:22;14646:2;14635:9;14631:18;14624:50;14697:32;14722:6;14714;14697:32;:::i;:::-;14683:46;;14778:9;14770:6;14766:22;14760:3;14749:9;14745:19;14738:51;14806:32;14831:6;14823;14806:32;:::i;:::-;14798:40;14403:441;-1:-1:-1;;;;;;;;14403:441:23:o;14849:1825::-;-1:-1:-1;;;;;15197:32:23;;15179:51;;15266:3;15261:2;15246:18;;15239:31;15320:13;;-1:-1:-1;;;;15226:1:23;15399:18;;;;15452;;;;15479:2;;15533:4;15525:6;15521:17;15511:27;;15479:2;15586;15578:6;15575:14;15555:18;15552:38;15549:2;;;-1:-1:-1;;;15613:34:23;;15670:4;15667:1;15660:15;15701:4;15620;15688:18;15549:2;15816:3;15801:19;;25486;;;25529:14;;;15845:18;15872:100;;;;15986:1;15981:317;;;;15838:460;;15872:100;-1:-1:-1;;15905:24:23;;15893:37;;15959:2;15950:12;;;-1:-1:-1;15872:100:23;;15981:317;25285:4;25304:17;;;25354:4;25338:21;;16075:4;16092:165;16106:6;16103:1;16100:13;16092:165;;;16184:14;;16171:11;;;16164:35;16227:16;;;;16128:2;16121:10;16092:165;;;16277:11;;;-1:-1:-1;;15838:460:23;;;;;;;16334:6;16329:2;16318:9;16314:18;16307:34;16350:45;16391:2;16380:9;16376:18;16368:6;-1:-1:-1;;;;;;13243:27:23;13231:40;;13221:56;16350:45;13620:10;13609:22;;16445:3;16430:19;;13597:35;16496:9;16491:3;16487:19;16481:3;16470:9;16466:19;16459:48;16530:29;16555:3;16547:6;16530:29;:::i;:::-;16516:43;;16608:9;16600:6;16596:22;16590:3;16579:9;16575:19;16568:51;16636:32;16661:6;16653;16636:32;:::i;:::-;16628:40;15169:1505;-1:-1:-1;;;;;;;;;;15169:1505:23:o;16679:316::-;-1:-1:-1;;;;;16856:32:23;;16838:51;;16925:2;16920;16905:18;;16898:30;;;-1:-1:-1;;16945:44:23;;16970:18;;16962:6;16945:44;:::i;17000:1486::-;17214:4;17243:2;17283;17272:9;17268:18;17313:2;17302:9;17295:21;17336:6;17371;17365:13;17402:6;17394;17387:22;17428:2;17418:12;;17461:2;17450:9;17446:18;17439:25;;17523:2;17513:6;17510:1;17506:14;17495:9;17491:30;17487:39;17561:2;17553:6;17549:15;17582:4;17595:862;17609:6;17606:1;17603:13;17595:862;;;17674:22;;;-1:-1:-1;;17670:36:23;17658:49;;17730:13;;17840:9;;-1:-1:-1;;;;;;17836:18:23;;;17821:34;;17902:11;;;17896:18;17892:27;;17875:15;;;17868:52;17967:11;;;17961:18;17957:27;17940:15;;;17933:52;18008:4;18051:11;;;18045:18;17766:4;18083:15;;;18076:27;;;17766:4;18008;18130:47;18161:15;;;18045:18;18130:47;:::i;:::-;18116:61;;;;18200:4;18253:2;18249;18245:11;18239:18;18217:40;;18306:6;18298;18294:19;18289:2;18281:6;18277:15;18270:44;;18337:40;18370:6;18354:14;18337:40;:::i;:::-;18435:12;;;;18327:50;-1:-1:-1;;;18400:15:23;;;;17631:1;17624:9;17595:862;;;-1:-1:-1;18474:6:23;;17223:1263;-1:-1:-1;;;;;;;;17223:1263:23:o;18683:490::-;-1:-1:-1;;;;;;18938:15:23;;;18920:34;;18990:15;;18985:2;18970:18;;18963:43;19042:3;19037:2;19022:18;;19015:31;;;18867:4;;19063:45;;19088:19;;19080:6;19063:45;:::i;:::-;19055:53;;19158:6;19151:14;19144:22;19139:2;19128:9;19124:18;19117:50;18876:297;;;;;;;:::o;19780:219::-;19929:2;19918:9;19911:21;19892:4;19949:44;19989:2;19978:9;19974:18;19966:6;19949:44;:::i;22591:345::-;22793:2;22775:21;;;22832:2;22812:18;;;22805:30;-1:-1:-1;;;22866:2:23;22851:18;;22844:51;22927:2;22912:18;;22765:171::o;24333:714::-;24634:6;24623:9;24616:25;24677:3;24672:2;24661:9;24657:18;24650:31;24597:4;24704:45;24744:3;24733:9;24729:19;24721:6;24704:45;:::i;:::-;24797:9;24789:6;24785:22;24780:2;24769:9;24765:18;24758:50;24831:32;24856:6;24848;24831:32;:::i;:::-;24817:46;;24911:9;24903:6;24899:22;24894:2;24883:9;24879:18;24872:50;24939:32;24964:6;24956;24939:32;:::i;:::-;24931:40;;;25037:1;25033;25028:3;25024:11;25020:19;25012:6;25008:32;25002:3;24991:9;24987:19;24980:61;24606:441;;;;;;;;:::o;25052:182::-;25111:4;-1:-1:-1;;;;;25136:6:23;25133:30;25130:2;;;25166:18;;:::i;:::-;-1:-1:-1;25211:1:23;25207:14;25223:4;25203:25;;25120:114::o;25554:258::-;25626:1;25636:113;25650:6;25647:1;25644:13;25636:113;;;25726:11;;;25720:18;25707:11;;;25700:39;25672:2;25665:10;25636:113;;;25767:6;25764:1;25761:13;25758:2;;;-1:-1:-1;;25802:1:23;25784:16;;25777:27;25607:205::o;25817:380::-;25896:1;25892:12;;;;25939;;;25960:2;;26014:4;26006:6;26002:17;25992:27;;25960:2;26067;26059:6;26056:14;26036:18;26033:38;26030:2;;;26113:10;26108:3;26104:20;26101:1;26094:31;26148:4;26145:1;26138:15;26176:4;26173:1;26166:15;26030:2;;25872:325;;;:::o;26202:225::-;26288:4;26280:6;26276:17;26359:6;26347:10;26344:22;-1:-1:-1;;;;;26311:10:23;26308:34;26305:62;26302:2;;;26370:18;;:::i;:::-;26406:2;26399:22;-1:-1:-1;26248:179:23:o;26432:249::-;26542:2;26523:13;;-1:-1:-1;;26519:27:23;26507:40;;-1:-1:-1;;;;;26562:34:23;;26598:22;;;26559:62;26556:2;;;26624:18;;:::i;:::-;26660:2;26653:22;-1:-1:-1;;26479:202:23:o;26686:236::-;26725:3;-1:-1:-1;;26746:17:23;;26743:2;;;-1:-1:-1;;;26786:33:23;;26842:4;26839:1;26832:15;26872:4;26793:3;26860:17;26743:2;-1:-1:-1;26914:1:23;26903:13;;26733:189::o;26927:127::-;26988:10;26983:3;26979:20;26976:1;26969:31;27019:4;27016:1;27009:15;27043:4;27040:1;27033:15;27059:185;27094:3;27136:1;27118:16;27115:23;27112:2;;;27186:1;27181:3;27176;27161:27;27217:10;27212:3;27208:20;27112:2;27102:142;:::o;27249:671::-;27288:3;27330:4;27312:16;27309:26;27306:2;;;27296:624;:::o;27306:2::-;27372;27366:9;-1:-1:-1;;27437:16:23;27433:25;;27430:1;27366:9;27409:50;27488:4;27482:11;27512:16;-1:-1:-1;;;;;27618:2:23;27611:4;27603:6;27599:17;27596:25;27591:2;27583:6;27580:14;27577:45;27574:2;;;27625:5;;;;;27296:624;:::o;27574:2::-;27662:6;27656:4;27652:17;27641:28;;27698:3;27692:10;27725:2;27717:6;27714:14;27711:2;;;27731:5;;;;;;27296:624;:::o;27711:2::-;27815;27796:16;27790:4;27786:27;27782:36;27775:4;27766:6;27761:3;27757:16;27753:27;27750:69;27747:2;;;27822:5;;;;;;27296:624;:::o;27747:2::-;27838:57;27889:4;27880:6;27872;27868:19;27864:30;27858:4;27838:57;:::i;:::-;-1:-1:-1;27911:3:23;;27296:624;-1:-1:-1;;;;;27296:624:23:o;27925:131::-;-1:-1:-1;;;;;28000:31:23;;27990:42;;27980:2;;28046:1;28043;28036:12;27980:2;27970:86;:::o",
  "source": "pragma solidity 0.8.4;\npragma abicoder v2;\n\nimport \"@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol\";\nimport \"@verii/verification-coupon-contract/contracts/VerificationCoupon.sol\";\nimport \"@verii/permissions-contract/contracts/Permissions.sol\";\nimport \"@verii/signature-verification-library/libraries/SignatureVerification.sol\";\n\ncontract MetadataRegistry is Initializable {\n    VerificationCoupon internal Coupon;\n\n    struct CredentialEntry {\n        bytes2 credentialType;\n        bytes encryptedPublicKey;\n        bool used;\n    }\n\n    struct ListMetadata {\n        bytes2 version;\n        bytes2 algType;\n        bytes issuerVc;\n        bool used;\n    }\n\n    struct CredentialIdentifier {\n        address accountId;\n        uint256 listId;\n        uint32 index;\n    }\n\n    struct CredentialMetadata {\n        bytes2 version;\n        bytes2 credentialType;\n        bytes2 algType;\n        bytes encryptedPublicKey;\n        bytes issuerVc;\n    }\n\n    mapping(bytes2 => bool) public freeCredentialTypes;\n    mapping(address => mapping(uint256 => ListMetadata)) public lists;\n    mapping(address => mapping(uint256 => mapping(uint32 => CredentialEntry))) internal indexUsed;\n\n    Permissions internal permissions;\n\n    event CreatedMetadataList(address sender, bytes issuerVc, uint256 listId, string traceId, string caoDid);\n    event AddedCredentialMetadata(address sender, bytes issuerVc, uint256 listId, bytes2 credentialType, uint32 index, string traceId, string caoDid);\n    event GotCredentialMetadata(CredentialMetadata[] credentialMetadataList);\n\n    modifier onlyVnf() {\n        require(msg.sender == permissions.getVNF(), \"Permissions: caller is not VNF\");\n        _;\n    }\n\n    function initialize(address _coupon, bytes2[] memory freeCredentialTypesList) public initializer {\n        Coupon = VerificationCoupon(_coupon);\n        for (uint256 i = 0; i < freeCredentialTypesList.length; i++) {\n            freeCredentialTypes[freeCredentialTypesList[i]] = true;\n        }\n    }\n\n    function setPermissionsAddress(address _permissions) public {\n        require(address(permissions) == address(0) || msg.sender == permissions.getVNF(), 'Permissions: caller is not VNF');\n        permissions = Permissions(_permissions);\n    }\n\n    function getPermissionsAddress() public view returns (address) {\n        return address(permissions);\n    }\n\n    function setCouponAddress(address _coupon) public {\n        require(msg.sender == Coupon.getVNF(), \"The caller is not VNF\");\n        Coupon = VerificationCoupon(_coupon);\n    }\n\n    function isExistMetadataList(address accountId, uint256 listId) public view returns (bool){\n        return lists[accountId][listId].used;\n    }\n\n    function newMetadataList(uint256 listId, bytes2 algType, bytes2 version, bytes memory issuerVc, string memory traceId, string memory caoDid) public {\n        newMetadataListInternal(listId, algType, version, issuerVc, traceId, caoDid, msg.sender);\n    }\n\n    function newMetadataListSigned(uint256 listId, bytes2 algType, bytes2 version, bytes memory issuerVc, string memory traceId, string memory caoDid, bytes memory signature) public {\n        address operator = SignatureVerification.recoverSigner(abi.encode(msg.sender), signature);\n        newMetadataListInternal(listId, algType, version, issuerVc, traceId, caoDid, operator);\n    }\n\n    function newMetadataListInternal(uint256 listId, bytes2 algType, bytes2 version, bytes memory issuerVc, string memory traceId, string memory caoDid, address operator) private {\n        address primary = permissions.checkOperator(operator);\n        require(!lists[primary][listId].used, \"List id already used\");\n        ListMetadata storage entries = lists[primary][listId];\n        entries.version = version;\n        entries.algType = algType;\n        entries.issuerVc = issuerVc;\n        entries.used = true;\n        emit CreatedMetadataList(primary, issuerVc, listId, traceId, caoDid);\n    }\n\n    function setEntry(\n        bytes2 credentialType,\n        bytes memory encryptedPublicKey,\n        uint256 listId,\n        uint32 index,\n        string memory traceId,\n        string memory caoDid\n    ) public {\n        setEntryInternal(credentialType, encryptedPublicKey, listId, index, traceId, caoDid, msg.sender);\n    }\n\n    function setEntrySigned(\n        bytes2 credentialType,\n        bytes memory encryptedPublicKey,\n        uint256 listId,\n        uint32 index,\n        string memory traceId,\n        string memory caoDid,\n        bytes memory signature\n    ) public {\n        address operator = SignatureVerification.recoverSigner(abi.encode(msg.sender), signature);\n        setEntryInternal(credentialType, encryptedPublicKey, listId, index, traceId, caoDid, operator);\n    }\n\n    function setEntryInternal(\n        bytes2 credentialType,\n        bytes memory encryptedPublicKey,\n        uint256 listId,\n        uint32 index,\n        string memory traceId,\n        string memory caoDid,\n        address operator\n    ) private {\n        address primary = checkOperatorWithCredentialType(operator, credentialType);\n        require(index < 10000, \"Invalid index\");\n        require(!indexUsed[primary][listId][index].used, \"Index already used\");\n        require(lists[primary][listId].used, \"List Id not aveliable\");\n        CredentialEntry storage entryDataLocal = indexUsed[primary][listId][index];\n        entryDataLocal.credentialType = credentialType;\n        entryDataLocal.encryptedPublicKey = encryptedPublicKey;\n        entryDataLocal.used = true;\n        emit AddedCredentialMetadata(primary, lists[primary][listId].issuerVc, listId, credentialType, index, traceId, caoDid);\n    }\n\n    function addFreeTypes(bytes2[] memory freeCredentialTypesList) public {\n        require(msg.sender == Coupon.getVNF(), \"The caller is not VNF\");\n        for (uint256 i = 0; i < freeCredentialTypesList.length; i++) {\n            freeCredentialTypes[freeCredentialTypesList[i]] = true;\n        }\n    }\n\n    function removeFreeTypes(bytes2[] memory freeCredentialTypesList) public {\n        require(msg.sender == Coupon.getVNF(), \"The caller is not VNF\");\n        for (uint256 i = 0; i < freeCredentialTypesList.length; i++) {\n            delete freeCredentialTypes[freeCredentialTypesList[i]];\n        }\n    }\n\n    function isFreeCredentialType(bytes2 credentialType) public view returns (bool){\n        return freeCredentialTypes[credentialType];\n    }\n\n    function isFreeGetEntries(CredentialMetadata[] memory entries) private view returns (bool){\n        for (uint256 i = 0; i < entries.length; i++) {\n            if (!isFreeCredentialType(entries[i].credentialType)) {\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function _getEntries(\n        CredentialIdentifier[] memory _entryIndexes\n    ) private view returns (CredentialMetadata[] memory) {\n        CredentialMetadata[] memory entries = new CredentialMetadata[](\n            _entryIndexes.length\n        );\n        for (uint256 i = 0; i < _entryIndexes.length; i++) {\n            require(lists[_entryIndexes[i].accountId][_entryIndexes[i].listId].used, \"List id not used\");\n            require(indexUsed[_entryIndexes[i].accountId][_entryIndexes[i].listId][_entryIndexes[i].index].used, \"Index not used\");\n            entries[i].version = lists[_entryIndexes[i].accountId][_entryIndexes[i].listId].version;\n            entries[i].credentialType = indexUsed[_entryIndexes[i].accountId][_entryIndexes[i].listId][_entryIndexes[i].index].credentialType;\n            entries[i].algType = lists[_entryIndexes[i].accountId][_entryIndexes[i].listId].algType;\n            entries[i].encryptedPublicKey = indexUsed[_entryIndexes[i].accountId][_entryIndexes[i].listId][_entryIndexes[i].index].encryptedPublicKey;\n            entries[i].issuerVc = lists[_entryIndexes[i].accountId][_entryIndexes[i].listId].issuerVc;\n        }\n        return entries;\n    }\n\n    function getFreeEntries(\n        CredentialIdentifier[] memory _entryIndexes\n    ) public view returns (CredentialMetadata[] memory) {\n        CredentialMetadata[] memory entries = _getEntries(_entryIndexes);\n        require(isFreeGetEntries(entries), 'Only free creadential types is allowed without coupon');\n        return entries;\n    }\n\n    function getPaidEntries(\n        CredentialIdentifier[] memory _entryIndexes,\n        string memory traceId,\n        string memory caoDid,\n        string memory burnerDid\n    ) public {\n        getPaidEntriesInternal(_entryIndexes, traceId, caoDid, burnerDid, msg.sender);\n    }\n\n    function getPaidEntriesSigned(\n        CredentialIdentifier[] memory _entryIndexes,\n        string memory traceId,\n        string memory caoDid,\n        string memory burnerDid,\n        bytes memory signature\n    ) public {\n        address operator = SignatureVerification.recoverSigner(abi.encode(msg.sender), signature);\n        getPaidEntriesInternal(_entryIndexes, traceId, caoDid, burnerDid, operator);\n    }\n\n    function getPaidEntriesInternal(\n        CredentialIdentifier[] memory _entryIndexes,\n        string memory traceId,\n        string memory caoDid,\n        string memory burnerDid,\n        address operator\n    ) private {\n        CredentialMetadata[] memory entries = _getEntries(_entryIndexes);\n        require(!isFreeGetEntries(entries), 'No paid creadential types');\n        uint256 _coupon = Coupon.getTokenId(operator);\n        Coupon.burn(_coupon, traceId, caoDid, burnerDid, operator);\n        emit GotCredentialMetadata(entries);\n    }\n\n    function checkOperatorWithCredentialType(address operator, bytes2 credentialType) public view returns (address) {\n        string memory permission = getPermissionOfCredentialTypeHash(credentialType);\n        try permissions.checkOperatorPermission(operator, permission) returns (address primary) {\n            return primary;\n        } catch Error(string memory reason) {\n            require(isEqual(reason, \"Permissions: primary of operator lacks requested permission\"), reason);\n            require(false, buildCheckOperatorPermissionError(permission));\n        }\n        return address(0);\n    }\n\n    function getPermissionOfCredentialTypeHash(bytes2 credentialType) private pure returns (string memory) {\n        string memory permissionCredentialIssue = \"credential:issue\";\n        string memory permissionCredentialIdentityIssue = \"credential:identityissue\";\n        string memory permissionCredentialContactIssue = \"credential:contactissue\";\n        string memory fallbackPermission = permissionCredentialIssue;\n        if (credentialType == 0x7808) {return permissionCredentialIssue;}\n        // Assessment\n        else if (credentialType == 0x41ec) {return permissionCredentialIssue;}\n        // AssessmentV1.0\n        else if (credentialType == 0xaf29) {return permissionCredentialIssue;}\n        // AssessmentV1.1\n        else if (credentialType == 0x0024) {return permissionCredentialIssue;}\n        // Badge\n        else if (credentialType == 0xc184) {return permissionCredentialIssue;}\n        // BadgeV1.1\n        else if (credentialType == 0x8684) {return permissionCredentialIssue;}\n        // Certification\n        else if (credentialType == 0x5df0) {return permissionCredentialIssue;}\n        // CertificationV1.0\n        else if (credentialType == 0xade9) {return permissionCredentialIssue;}\n        // CertificationV1.1\n        else if (credentialType == 0x2096) {return permissionCredentialIssue;}\n        // Course\n        else if (credentialType == 0xb037) {return permissionCredentialIssue;}\n        // CourseAttendanceV1.0\n        else if (credentialType == 0xc385) {return permissionCredentialIssue;}\n        // CourseAttendanceV1.1\n        else if (credentialType == 0x5f0e) {return permissionCredentialIssue;}\n        // CourseCompletionV1.0\n        else if (credentialType == 0x4b80) {return permissionCredentialIssue;}\n        // CourseCompletionV1.1\n        else if (credentialType == 0xf2dc) {return permissionCredentialIssue;}\n        // CourseRegistrationV1.0\n        else if (credentialType == 0x955b) {return permissionCredentialIssue;}\n        // CourseRegistrationV1.1\n        else if (credentialType == 0x7516) {return permissionCredentialIssue;}\n        // CurrentEmploymentPosition\n        else if (credentialType == 0xeea2) {return permissionCredentialIdentityIssue;}\n        // DriversLicenseV1.0\n        else if (credentialType == 0xb89f) {return permissionCredentialIssue;}\n        // EducationDegree\n        else if (credentialType == 0x294a) {return permissionCredentialIssue;}\n        // EducationDegreeGraduationV1.0\n        else if (credentialType == 0x8642) {return permissionCredentialIssue;}\n        // EducationDegreeGraduationV1.1\n        else if (credentialType == 0x9b9f) {return permissionCredentialIssue;}\n        // EducationDegreeRegistrationV1.0\n        else if (credentialType == 0x5ab6) {return permissionCredentialIssue;}\n        // EducationDegreeRegistrationV1.1\n        else if (credentialType == 0xb139) {return permissionCredentialIssue;}\n        // EducationDegreeStudyV1.0\n        else if (credentialType == 0xa214) {return permissionCredentialIssue;}\n        // EducationDegreeStudyV1.1\n        else if (credentialType == 0x969c) {return permissionCredentialContactIssue;}\n        // Email\n        else if (credentialType == 0x8f07) {return permissionCredentialContactIssue;}\n        // EmailV1.0\n        else if (credentialType == 0x764c) {return permissionCredentialIssue;}\n        // EmploymentCurrentV1.0\n        else if (credentialType == 0xdb4c) {return permissionCredentialIssue;}\n        // EmploymentCurrentV1.1\n        else if (credentialType == 0x7e15) {return permissionCredentialIssue;}\n        // EmploymentPastV1.0\n        else if (credentialType == 0xf4aa) {return permissionCredentialIssue;}\n        // EmploymentPastV1.1\n        else if (credentialType == 0x851f) {return permissionCredentialIdentityIssue;}\n        // IdDocument\n        else if (credentialType == 0xfeab) {return permissionCredentialIdentityIssue;}\n        // IdDocumentV1.0\n        else if (credentialType == 0xefca) {return permissionCredentialIssue;}\n        // LicenseV1.0\n        else if (credentialType == 0xd8ae) {return permissionCredentialIssue;}\n        // LicenseV1.1\n        else if (credentialType == 0xdeef) {return permissionCredentialIdentityIssue;}\n        // NationalIdCardV1.0\n        else if (credentialType == 0x2936) {return permissionCredentialIssue;}\n        // OpenBadgeCredential\n        else if (credentialType == 0x86bf) {return permissionCredentialIssue;}\n        // OpenBadgeV1.0\n        else if (credentialType == 0x5b0e) {return permissionCredentialIssue;}\n        // OpenBadgeV2.0\n        else if (credentialType == 0x7b17) {return permissionCredentialIdentityIssue;}\n        // PassportV1.0\n        else if (credentialType == 0x29d2) {return permissionCredentialIssue;}\n        // PastEmploymentPosition\n        else if (credentialType == 0x63dc) {return permissionCredentialContactIssue;}\n        // Phone\n        else if (credentialType == 0x4ffb) {return permissionCredentialContactIssue;}\n        // PhoneV1.0\n        else if (credentialType == 0xf052) {return permissionCredentialIssue;}\n        // ProofOfAgeV1.0\n        else if (credentialType == 0xa004) {return permissionCredentialIdentityIssue;}\n        // ResidentPermitV1.0\n        return fallbackPermission;\n    }\n\n    function buildCheckOperatorPermissionError(string memory permission) private pure returns (string memory) {\n        if (isEqual(permission, \"credential:issue\")) {\n            return \"Permissions: primary of operator lacks credential:issue permission\";\n        } else if (isEqual(permission, \"credential:identityissue\")) {\n            return \"Permissions: primary of operator lacks credential:identityissue permission\";\n        } else if (isEqual(permission, \"credential:contactissue\")) {\n            return \"Permissions: primary of operator lacks credential:contactissue permission\";\n        }\n        return \"Permissions: primary of operator lacks permission for credentialType\";\n    }\n\n    function isEqual(string memory a, string memory b) public pure returns (bool) {\n        return (keccak256(abi.encodePacked((a))) == keccak256(abi.encodePacked((b))));\n    }\n}\n",
  "sourcePath": "/Users/nassan/s/vclworld/monorepo/contracts/metadata-registry/contracts/MetadataRegistry.sol",
  "ast": {
    "absolutePath": "project:/contracts/MetadataRegistry.sol",
    "exportedSymbols": {
      "AccessControlEnumerableUpgradeable": [
        145
      ],
      "AccessControlUpgradeable": [
        482
      ],
      "AddressUpgradeable": [
        2503
      ],
      "ContextUpgradeable": [
        2554
      ],
      "CountersUpgradeable": [
        2628
      ],
      "ERC1155Upgradeable": [
        1995
      ],
      "ERC165Upgradeable": [
        2902
      ],
      "EnumerableSetUpgradeable": [
        4498
      ],
      "IAccessControlEnumerableUpgradeable": [
        507
      ],
      "IAccessControlUpgradeable": [
        580
      ],
      "IERC1155MetadataURIUpgradeable": [
        2173
      ],
      "IERC1155ReceiverUpgradeable": [
        2036
      ],
      "IERC1155Upgradeable": [
        2158
      ],
      "IERC165Upgradeable": [
        2914
      ],
      "Initializable": [
        749
      ],
      "MathUpgradeable": [
        3780
      ],
      "MetadataRegistry": [
        7414
      ],
      "Permissions": [
        5358
      ],
      "SignatureVerification": [
        5427
      ],
      "SignedMathUpgradeable": [
        3885
      ],
      "StringsUpgradeable": [
        2857
      ],
      "VerificationCoupon": [
        5974
      ]
    },
    "id": 7415,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 5976,
        "literals": [
          "solidity",
          "0.8",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:22:21"
      },
      {
        "id": 5977,
        "literals": [
          "abicoder",
          "v2"
        ],
        "nodeType": "PragmaDirective",
        "src": "23:19:21"
      },
      {
        "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
        "file": "@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.sol",
        "id": 5978,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 7415,
        "sourceUnit": 750,
        "src": "44:75:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@verii/verification-coupon-contract/contracts/VerificationCoupon.sol",
        "file": "@verii/verification-coupon-contract/contracts/VerificationCoupon.sol",
        "id": 5979,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 7415,
        "sourceUnit": 5975,
        "src": "120:91:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@verii/permissions-contract/contracts/Permissions.sol",
        "file": "@verii/permissions-contract/contracts/Permissions.sol",
        "id": 5980,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 7415,
        "sourceUnit": 5359,
        "src": "212:76:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@verii/signature-verification-library/libraries/SignatureVerification.sol",
        "file": "@verii/signature-verification-library/libraries/SignatureVerification.sol",
        "id": 5981,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 7415,
        "sourceUnit": 5428,
        "src": "289:96:21",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 5982,
              "name": "Initializable",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 749,
              "src": "416:13:21"
            },
            "id": 5983,
            "nodeType": "InheritanceSpecifier",
            "src": "416:13:21"
          }
        ],
        "contractDependencies": [],
        "contractKind": "contract",
        "fullyImplemented": true,
        "id": 7414,
        "linearizedBaseContracts": [
          7414,
          749
        ],
        "name": "MetadataRegistry",
        "nameLocation": "396:16:21",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 5986,
            "mutability": "mutable",
            "name": "Coupon",
            "nameLocation": "464:6:21",
            "nodeType": "VariableDeclaration",
            "scope": 7414,
            "src": "436:34:21",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_VerificationCoupon_$5974",
              "typeString": "contract VerificationCoupon"
            },
            "typeName": {
              "id": 5985,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 5984,
                "name": "VerificationCoupon",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 5974,
                "src": "436:18:21"
              },
              "referencedDeclaration": 5974,
              "src": "436:18:21",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_VerificationCoupon_$5974",
                "typeString": "contract VerificationCoupon"
              }
            },
            "visibility": "internal"
          },
          {
            "canonicalName": "MetadataRegistry.CredentialEntry",
            "id": 5993,
            "members": [
              {
                "constant": false,
                "id": 5988,
                "mutability": "mutable",
                "name": "credentialType",
                "nameLocation": "517:14:21",
                "nodeType": "VariableDeclaration",
                "scope": 5993,
                "src": "510:21:21",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes2",
                  "typeString": "bytes2"
                },
                "typeName": {
                  "id": 5987,
                  "name": "bytes2",
                  "nodeType": "ElementaryTypeName",
                  "src": "510:6:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5990,
                "mutability": "mutable",
                "name": "encryptedPublicKey",
                "nameLocation": "547:18:21",
                "nodeType": "VariableDeclaration",
                "scope": 5993,
                "src": "541:24:21",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 5989,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "541:5:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5992,
                "mutability": "mutable",
                "name": "used",
                "nameLocation": "580:4:21",
                "nodeType": "VariableDeclaration",
                "scope": 5993,
                "src": "575:9:21",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 5991,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "575:4:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "CredentialEntry",
            "nameLocation": "484:15:21",
            "nodeType": "StructDefinition",
            "scope": 7414,
            "src": "477:114:21",
            "visibility": "public"
          },
          {
            "canonicalName": "MetadataRegistry.ListMetadata",
            "id": 6002,
            "members": [
              {
                "constant": false,
                "id": 5995,
                "mutability": "mutable",
                "name": "version",
                "nameLocation": "634:7:21",
                "nodeType": "VariableDeclaration",
                "scope": 6002,
                "src": "627:14:21",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes2",
                  "typeString": "bytes2"
                },
                "typeName": {
                  "id": 5994,
                  "name": "bytes2",
                  "nodeType": "ElementaryTypeName",
                  "src": "627:6:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5997,
                "mutability": "mutable",
                "name": "algType",
                "nameLocation": "658:7:21",
                "nodeType": "VariableDeclaration",
                "scope": 6002,
                "src": "651:14:21",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes2",
                  "typeString": "bytes2"
                },
                "typeName": {
                  "id": 5996,
                  "name": "bytes2",
                  "nodeType": "ElementaryTypeName",
                  "src": "651:6:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5999,
                "mutability": "mutable",
                "name": "issuerVc",
                "nameLocation": "681:8:21",
                "nodeType": "VariableDeclaration",
                "scope": 6002,
                "src": "675:14:21",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 5998,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "675:5:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 6001,
                "mutability": "mutable",
                "name": "used",
                "nameLocation": "704:4:21",
                "nodeType": "VariableDeclaration",
                "scope": 6002,
                "src": "699:9:21",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 6000,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "699:4:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "ListMetadata",
            "nameLocation": "604:12:21",
            "nodeType": "StructDefinition",
            "scope": 7414,
            "src": "597:118:21",
            "visibility": "public"
          },
          {
            "canonicalName": "MetadataRegistry.CredentialIdentifier",
            "id": 6009,
            "members": [
              {
                "constant": false,
                "id": 6004,
                "mutability": "mutable",
                "name": "accountId",
                "nameLocation": "767:9:21",
                "nodeType": "VariableDeclaration",
                "scope": 6009,
                "src": "759:17:21",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 6003,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "759:7:21",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 6006,
                "mutability": "mutable",
                "name": "listId",
                "nameLocation": "794:6:21",
                "nodeType": "VariableDeclaration",
                "scope": 6009,
                "src": "786:14:21",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 6005,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "786:7:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 6008,
                "mutability": "mutable",
                "name": "index",
                "nameLocation": "817:5:21",
                "nodeType": "VariableDeclaration",
                "scope": 6009,
                "src": "810:12:21",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint32",
                  "typeString": "uint32"
                },
                "typeName": {
                  "id": 6007,
                  "name": "uint32",
                  "nodeType": "ElementaryTypeName",
                  "src": "810:6:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "CredentialIdentifier",
            "nameLocation": "728:20:21",
            "nodeType": "StructDefinition",
            "scope": 7414,
            "src": "721:108:21",
            "visibility": "public"
          },
          {
            "canonicalName": "MetadataRegistry.CredentialMetadata",
            "id": 6020,
            "members": [
              {
                "constant": false,
                "id": 6011,
                "mutability": "mutable",
                "name": "version",
                "nameLocation": "878:7:21",
                "nodeType": "VariableDeclaration",
                "scope": 6020,
                "src": "871:14:21",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes2",
                  "typeString": "bytes2"
                },
                "typeName": {
                  "id": 6010,
                  "name": "bytes2",
                  "nodeType": "ElementaryTypeName",
                  "src": "871:6:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 6013,
                "mutability": "mutable",
                "name": "credentialType",
                "nameLocation": "902:14:21",
                "nodeType": "VariableDeclaration",
                "scope": 6020,
                "src": "895:21:21",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes2",
                  "typeString": "bytes2"
                },
                "typeName": {
                  "id": 6012,
                  "name": "bytes2",
                  "nodeType": "ElementaryTypeName",
                  "src": "895:6:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 6015,
                "mutability": "mutable",
                "name": "algType",
                "nameLocation": "933:7:21",
                "nodeType": "VariableDeclaration",
                "scope": 6020,
                "src": "926:14:21",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes2",
                  "typeString": "bytes2"
                },
                "typeName": {
                  "id": 6014,
                  "name": "bytes2",
                  "nodeType": "ElementaryTypeName",
                  "src": "926:6:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 6017,
                "mutability": "mutable",
                "name": "encryptedPublicKey",
                "nameLocation": "956:18:21",
                "nodeType": "VariableDeclaration",
                "scope": 6020,
                "src": "950:24:21",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 6016,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "950:5:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 6019,
                "mutability": "mutable",
                "name": "issuerVc",
                "nameLocation": "990:8:21",
                "nodeType": "VariableDeclaration",
                "scope": 6020,
                "src": "984:14:21",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes_storage_ptr",
                  "typeString": "bytes"
                },
                "typeName": {
                  "id": 6018,
                  "name": "bytes",
                  "nodeType": "ElementaryTypeName",
                  "src": "984:5:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_storage_ptr",
                    "typeString": "bytes"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "CredentialMetadata",
            "nameLocation": "842:18:21",
            "nodeType": "StructDefinition",
            "scope": 7414,
            "src": "835:170:21",
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "1e1f5ea6",
            "id": 6024,
            "mutability": "mutable",
            "name": "freeCredentialTypes",
            "nameLocation": "1042:19:21",
            "nodeType": "VariableDeclaration",
            "scope": 7414,
            "src": "1011:50:21",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes2_$_t_bool_$",
              "typeString": "mapping(bytes2 => bool)"
            },
            "typeName": {
              "id": 6023,
              "keyType": {
                "id": 6021,
                "name": "bytes2",
                "nodeType": "ElementaryTypeName",
                "src": "1019:6:21",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes2",
                  "typeString": "bytes2"
                }
              },
              "nodeType": "Mapping",
              "src": "1011:23:21",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes2_$_t_bool_$",
                "typeString": "mapping(bytes2 => bool)"
              },
              "valueType": {
                "id": 6022,
                "name": "bool",
                "nodeType": "ElementaryTypeName",
                "src": "1029:4:21",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "c50a2def",
            "id": 6031,
            "mutability": "mutable",
            "name": "lists",
            "nameLocation": "1127:5:21",
            "nodeType": "VariableDeclaration",
            "scope": 7414,
            "src": "1067:65:21",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ListMetadata_$6002_storage_$_$",
              "typeString": "mapping(address => mapping(uint256 => struct MetadataRegistry.ListMetadata))"
            },
            "typeName": {
              "id": 6030,
              "keyType": {
                "id": 6025,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1075:7:21",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1067:52:21",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ListMetadata_$6002_storage_$_$",
                "typeString": "mapping(address => mapping(uint256 => struct MetadataRegistry.ListMetadata))"
              },
              "valueType": {
                "id": 6029,
                "keyType": {
                  "id": 6026,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1094:7:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "1086:32:21",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ListMetadata_$6002_storage_$",
                  "typeString": "mapping(uint256 => struct MetadataRegistry.ListMetadata)"
                },
                "valueType": {
                  "id": 6028,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 6027,
                    "name": "ListMetadata",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 6002,
                    "src": "1105:12:21"
                  },
                  "referencedDeclaration": 6002,
                  "src": "1105:12:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ListMetadata_$6002_storage_ptr",
                    "typeString": "struct MetadataRegistry.ListMetadata"
                  }
                }
              }
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 6040,
            "mutability": "mutable",
            "name": "indexUsed",
            "nameLocation": "1222:9:21",
            "nodeType": "VariableDeclaration",
            "scope": 7414,
            "src": "1138:93:21",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_CredentialEntry_$5993_storage_$_$_$",
              "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct MetadataRegistry.CredentialEntry)))"
            },
            "typeName": {
              "id": 6039,
              "keyType": {
                "id": 6032,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1146:7:21",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1138:74:21",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_CredentialEntry_$5993_storage_$_$_$",
                "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct MetadataRegistry.CredentialEntry)))"
              },
              "valueType": {
                "id": 6038,
                "keyType": {
                  "id": 6033,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1165:7:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "nodeType": "Mapping",
                "src": "1157:54:21",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_CredentialEntry_$5993_storage_$_$",
                  "typeString": "mapping(uint256 => mapping(uint32 => struct MetadataRegistry.CredentialEntry))"
                },
                "valueType": {
                  "id": 6037,
                  "keyType": {
                    "id": 6034,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1184:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1176:34:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_CredentialEntry_$5993_storage_$",
                    "typeString": "mapping(uint32 => struct MetadataRegistry.CredentialEntry)"
                  },
                  "valueType": {
                    "id": 6036,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6035,
                      "name": "CredentialEntry",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 5993,
                      "src": "1194:15:21"
                    },
                    "referencedDeclaration": 5993,
                    "src": "1194:15:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CredentialEntry_$5993_storage_ptr",
                      "typeString": "struct MetadataRegistry.CredentialEntry"
                    }
                  }
                }
              }
            },
            "visibility": "internal"
          },
          {
            "constant": false,
            "id": 6043,
            "mutability": "mutable",
            "name": "permissions",
            "nameLocation": "1259:11:21",
            "nodeType": "VariableDeclaration",
            "scope": 7414,
            "src": "1238:32:21",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_Permissions_$5358",
              "typeString": "contract Permissions"
            },
            "typeName": {
              "id": 6042,
              "nodeType": "UserDefinedTypeName",
              "pathNode": {
                "id": 6041,
                "name": "Permissions",
                "nodeType": "IdentifierPath",
                "referencedDeclaration": 5358,
                "src": "1238:11:21"
              },
              "referencedDeclaration": 5358,
              "src": "1238:11:21",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Permissions_$5358",
                "typeString": "contract Permissions"
              }
            },
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "id": 6055,
            "name": "CreatedMetadataList",
            "nameLocation": "1283:19:21",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6054,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6045,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "sender",
                  "nameLocation": "1311:6:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6055,
                  "src": "1303:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6044,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1303:7:21",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6047,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "issuerVc",
                  "nameLocation": "1325:8:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6055,
                  "src": "1319:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6046,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1319:5:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6049,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "listId",
                  "nameLocation": "1343:6:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6055,
                  "src": "1335:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6048,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1335:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6051,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "1358:7:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6055,
                  "src": "1351:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6050,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1351:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6053,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "1374:6:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6055,
                  "src": "1367:13:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6052,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1367:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1302:79:21"
            },
            "src": "1277:105:21"
          },
          {
            "anonymous": false,
            "id": 6071,
            "name": "AddedCredentialMetadata",
            "nameLocation": "1393:23:21",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6070,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6057,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "sender",
                  "nameLocation": "1425:6:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6071,
                  "src": "1417:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6056,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1417:7:21",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6059,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "issuerVc",
                  "nameLocation": "1439:8:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6071,
                  "src": "1433:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6058,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1433:5:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6061,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "listId",
                  "nameLocation": "1457:6:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6071,
                  "src": "1449:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6060,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1449:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6063,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "credentialType",
                  "nameLocation": "1472:14:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6071,
                  "src": "1465:21:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  },
                  "typeName": {
                    "id": 6062,
                    "name": "bytes2",
                    "nodeType": "ElementaryTypeName",
                    "src": "1465:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes2",
                      "typeString": "bytes2"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6065,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "1495:5:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6071,
                  "src": "1488:12:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 6064,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1488:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6067,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "1509:7:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6071,
                  "src": "1502:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6066,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1502:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6069,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "1525:6:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6071,
                  "src": "1518:13:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6068,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "1518:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1416:116:21"
            },
            "src": "1387:146:21"
          },
          {
            "anonymous": false,
            "id": 6077,
            "name": "GotCredentialMetadata",
            "nameLocation": "1544:21:21",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6076,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6075,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "credentialMetadataList",
                  "nameLocation": "1587:22:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6077,
                  "src": "1566:43:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct MetadataRegistry.CredentialMetadata[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6073,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 6072,
                        "name": "CredentialMetadata",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 6020,
                        "src": "1566:18:21"
                      },
                      "referencedDeclaration": 6020,
                      "src": "1566:18:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_CredentialMetadata_$6020_storage_ptr",
                        "typeString": "struct MetadataRegistry.CredentialMetadata"
                      }
                    },
                    "id": 6074,
                    "nodeType": "ArrayTypeName",
                    "src": "1566:20:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_storage_$dyn_storage_ptr",
                      "typeString": "struct MetadataRegistry.CredentialMetadata[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1565:45:21"
            },
            "src": "1538:73:21"
          },
          {
            "body": {
              "id": 6090,
              "nodeType": "Block",
              "src": "1636:105:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 6085,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 6080,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "1654:3:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 6081,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "1654:10:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 6082,
                              "name": "permissions",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6043,
                              "src": "1668:11:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Permissions_$5358",
                                "typeString": "contract Permissions"
                              }
                            },
                            "id": 6083,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getVNF",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4628,
                            "src": "1668:18:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 6084,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1668:20:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1654:34:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5065726d697373696f6e733a2063616c6c6572206973206e6f7420564e46",
                        "id": 6086,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1690:32:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1742f33f239814f4f24d27ea94d36db4ee95bbdd15300a47d6f32b5fb11a5ad8",
                          "typeString": "literal_string \"Permissions: caller is not VNF\""
                        },
                        "value": "Permissions: caller is not VNF"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1742f33f239814f4f24d27ea94d36db4ee95bbdd15300a47d6f32b5fb11a5ad8",
                          "typeString": "literal_string \"Permissions: caller is not VNF\""
                        }
                      ],
                      "id": 6079,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "1646:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6087,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1646:77:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6088,
                  "nodeType": "ExpressionStatement",
                  "src": "1646:77:21"
                },
                {
                  "id": 6089,
                  "nodeType": "PlaceholderStatement",
                  "src": "1733:1:21"
                }
              ]
            },
            "id": 6091,
            "name": "onlyVnf",
            "nameLocation": "1626:7:21",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 6078,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1633:2:21"
            },
            "src": "1617:124:21",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6128,
              "nodeType": "Block",
              "src": "1844:202:21",
              "statements": [
                {
                  "expression": {
                    "id": 6105,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 6101,
                      "name": "Coupon",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5986,
                      "src": "1854:6:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_VerificationCoupon_$5974",
                        "typeString": "contract VerificationCoupon"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 6103,
                          "name": "_coupon",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6093,
                          "src": "1882:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 6102,
                        "name": "VerificationCoupon",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5974,
                        "src": "1863:18:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_VerificationCoupon_$5974_$",
                          "typeString": "type(contract VerificationCoupon)"
                        }
                      },
                      "id": 6104,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1863:27:21",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_VerificationCoupon_$5974",
                        "typeString": "contract VerificationCoupon"
                      }
                    },
                    "src": "1854:36:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VerificationCoupon_$5974",
                      "typeString": "contract VerificationCoupon"
                    }
                  },
                  "id": 6106,
                  "nodeType": "ExpressionStatement",
                  "src": "1854:36:21"
                },
                {
                  "body": {
                    "id": 6126,
                    "nodeType": "Block",
                    "src": "1961:79:21",
                    "statements": [
                      {
                        "expression": {
                          "id": 6124,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 6118,
                              "name": "freeCredentialTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6024,
                              "src": "1975:19:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes2_$_t_bool_$",
                                "typeString": "mapping(bytes2 => bool)"
                              }
                            },
                            "id": 6122,
                            "indexExpression": {
                              "baseExpression": {
                                "id": 6119,
                                "name": "freeCredentialTypesList",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6096,
                                "src": "1995:23:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes2_$dyn_memory_ptr",
                                  "typeString": "bytes2[] memory"
                                }
                              },
                              "id": 6121,
                              "indexExpression": {
                                "id": 6120,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6108,
                                "src": "2019:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1995:26:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes2",
                                "typeString": "bytes2"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "1975:47:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 6123,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2025:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "1975:54:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6125,
                        "nodeType": "ExpressionStatement",
                        "src": "1975:54:21"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 6114,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 6111,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6108,
                      "src": "1920:1:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 6112,
                        "name": "freeCredentialTypesList",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6096,
                        "src": "1924:23:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes2_$dyn_memory_ptr",
                          "typeString": "bytes2[] memory"
                        }
                      },
                      "id": 6113,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "1924:30:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "1920:34:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 6127,
                  "initializationExpression": {
                    "assignments": [
                      6108
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 6108,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "1913:1:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 6127,
                        "src": "1905:9:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6107,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "1905:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 6110,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 6109,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "1917:1:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "1905:13:21"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 6116,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "1956:3:21",
                      "subExpression": {
                        "id": 6115,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6108,
                        "src": "1956:1:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6117,
                    "nodeType": "ExpressionStatement",
                    "src": "1956:3:21"
                  },
                  "nodeType": "ForStatement",
                  "src": "1900:140:21"
                }
              ]
            },
            "functionSelector": "82681bfa",
            "id": 6129,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "id": 6099,
                "kind": "modifierInvocation",
                "modifierName": {
                  "id": 6098,
                  "name": "initializer",
                  "nodeType": "IdentifierPath",
                  "referencedDeclaration": 651,
                  "src": "1832:11:21"
                },
                "nodeType": "ModifierInvocation",
                "src": "1832:11:21"
              }
            ],
            "name": "initialize",
            "nameLocation": "1756:10:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6097,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6093,
                  "mutability": "mutable",
                  "name": "_coupon",
                  "nameLocation": "1775:7:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6129,
                  "src": "1767:15:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6092,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1767:7:21",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6096,
                  "mutability": "mutable",
                  "name": "freeCredentialTypesList",
                  "nameLocation": "1800:23:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6129,
                  "src": "1784:39:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes2_$dyn_memory_ptr",
                    "typeString": "bytes2[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6094,
                      "name": "bytes2",
                      "nodeType": "ElementaryTypeName",
                      "src": "1784:6:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes2",
                        "typeString": "bytes2"
                      }
                    },
                    "id": 6095,
                    "nodeType": "ArrayTypeName",
                    "src": "1784:8:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes2_$dyn_storage_ptr",
                      "typeString": "bytes2[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1766:58:21"
            },
            "returnParameters": {
              "id": 6100,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1844:0:21"
            },
            "scope": 7414,
            "src": "1747:299:21",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6160,
              "nodeType": "Block",
              "src": "2112:181:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 6150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 6143,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "arguments": [
                              {
                                "id": 6137,
                                "name": "permissions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6043,
                                "src": "2138:11:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Permissions_$5358",
                                  "typeString": "contract Permissions"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_Permissions_$5358",
                                  "typeString": "contract Permissions"
                                }
                              ],
                              "id": 6136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2130:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 6135,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2130:7:21",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6138,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2130:20:21",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [
                              {
                                "hexValue": "30",
                                "id": 6141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2162:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 6140,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2154:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 6139,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "2154:7:21",
                                "typeDescriptions": {}
                              }
                            },
                            "id": 6142,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2154:10:21",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2130:34:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 6149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "expression": {
                              "id": 6144,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "2168:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 6145,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "2168:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "id": 6146,
                                "name": "permissions",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6043,
                                "src": "2182:11:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Permissions_$5358",
                                  "typeString": "contract Permissions"
                                }
                              },
                              "id": 6147,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getVNF",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4628,
                              "src": "2182:18:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                "typeString": "function () view external returns (address)"
                              }
                            },
                            "id": 6148,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2182:20:21",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2168:34:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2130:72:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5065726d697373696f6e733a2063616c6c6572206973206e6f7420564e46",
                        "id": 6151,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2204:32:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1742f33f239814f4f24d27ea94d36db4ee95bbdd15300a47d6f32b5fb11a5ad8",
                          "typeString": "literal_string \"Permissions: caller is not VNF\""
                        },
                        "value": "Permissions: caller is not VNF"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1742f33f239814f4f24d27ea94d36db4ee95bbdd15300a47d6f32b5fb11a5ad8",
                          "typeString": "literal_string \"Permissions: caller is not VNF\""
                        }
                      ],
                      "id": 6134,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "2122:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6152,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2122:115:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6153,
                  "nodeType": "ExpressionStatement",
                  "src": "2122:115:21"
                },
                {
                  "expression": {
                    "id": 6158,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 6154,
                      "name": "permissions",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6043,
                      "src": "2247:11:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Permissions_$5358",
                        "typeString": "contract Permissions"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 6156,
                          "name": "_permissions",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6131,
                          "src": "2273:12:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 6155,
                        "name": "Permissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5358,
                        "src": "2261:11:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_Permissions_$5358_$",
                          "typeString": "type(contract Permissions)"
                        }
                      },
                      "id": 6157,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2261:25:21",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_Permissions_$5358",
                        "typeString": "contract Permissions"
                      }
                    },
                    "src": "2247:39:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Permissions_$5358",
                      "typeString": "contract Permissions"
                    }
                  },
                  "id": 6159,
                  "nodeType": "ExpressionStatement",
                  "src": "2247:39:21"
                }
              ]
            },
            "functionSelector": "fb5e3c25",
            "id": 6161,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setPermissionsAddress",
            "nameLocation": "2061:21:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6132,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6131,
                  "mutability": "mutable",
                  "name": "_permissions",
                  "nameLocation": "2091:12:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6161,
                  "src": "2083:20:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6130,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2083:7:21",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2082:22:21"
            },
            "returnParameters": {
              "id": 6133,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2112:0:21"
            },
            "scope": 7414,
            "src": "2052:241:21",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6171,
              "nodeType": "Block",
              "src": "2362:44:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6168,
                        "name": "permissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6043,
                        "src": "2387:11:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Permissions_$5358",
                          "typeString": "contract Permissions"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_contract$_Permissions_$5358",
                          "typeString": "contract Permissions"
                        }
                      ],
                      "id": 6167,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "2379:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 6166,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2379:7:21",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 6169,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2379:20:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 6165,
                  "id": 6170,
                  "nodeType": "Return",
                  "src": "2372:27:21"
                }
              ]
            },
            "functionSelector": "a3b3cfbc",
            "id": 6172,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPermissionsAddress",
            "nameLocation": "2308:21:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6162,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2329:2:21"
            },
            "returnParameters": {
              "id": 6165,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6164,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6172,
                  "src": "2353:7:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6163,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2353:7:21",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2352:9:21"
            },
            "scope": 7414,
            "src": "2299:107:21",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6193,
              "nodeType": "Block",
              "src": "2462:126:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 6183,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 6178,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "2480:3:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 6179,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "2480:10:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 6180,
                              "name": "Coupon",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5986,
                              "src": "2494:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VerificationCoupon_$5974",
                                "typeString": "contract VerificationCoupon"
                              }
                            },
                            "id": 6181,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getVNF",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5566,
                            "src": "2494:13:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 6182,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2494:15:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2480:29:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5468652063616c6c6572206973206e6f7420564e46",
                        "id": 6184,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2511:23:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ac07a71f12c270c07ea84bb01e6423293637c251609564d208901a72bdb04be8",
                          "typeString": "literal_string \"The caller is not VNF\""
                        },
                        "value": "The caller is not VNF"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ac07a71f12c270c07ea84bb01e6423293637c251609564d208901a72bdb04be8",
                          "typeString": "literal_string \"The caller is not VNF\""
                        }
                      ],
                      "id": 6177,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "2472:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6185,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2472:63:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6186,
                  "nodeType": "ExpressionStatement",
                  "src": "2472:63:21"
                },
                {
                  "expression": {
                    "id": 6191,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "id": 6187,
                      "name": "Coupon",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5986,
                      "src": "2545:6:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_VerificationCoupon_$5974",
                        "typeString": "contract VerificationCoupon"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "arguments": [
                        {
                          "id": 6189,
                          "name": "_coupon",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6174,
                          "src": "2573:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 6188,
                        "name": "VerificationCoupon",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5974,
                        "src": "2554:18:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_VerificationCoupon_$5974_$",
                          "typeString": "type(contract VerificationCoupon)"
                        }
                      },
                      "id": 6190,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2554:27:21",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_VerificationCoupon_$5974",
                        "typeString": "contract VerificationCoupon"
                      }
                    },
                    "src": "2545:36:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_VerificationCoupon_$5974",
                      "typeString": "contract VerificationCoupon"
                    }
                  },
                  "id": 6192,
                  "nodeType": "ExpressionStatement",
                  "src": "2545:36:21"
                }
              ]
            },
            "functionSelector": "40522a3d",
            "id": 6194,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setCouponAddress",
            "nameLocation": "2421:16:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6175,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6174,
                  "mutability": "mutable",
                  "name": "_coupon",
                  "nameLocation": "2446:7:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6194,
                  "src": "2438:15:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6173,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2438:7:21",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2437:17:21"
            },
            "returnParameters": {
              "id": 6176,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2462:0:21"
            },
            "scope": 7414,
            "src": "2412:176:21",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6210,
              "nodeType": "Block",
              "src": "2684:53:21",
              "statements": [
                {
                  "expression": {
                    "expression": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 6203,
                          "name": "lists",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6031,
                          "src": "2701:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ListMetadata_$6002_storage_$_$",
                            "typeString": "mapping(address => mapping(uint256 => struct MetadataRegistry.ListMetadata storage ref))"
                          }
                        },
                        "id": 6205,
                        "indexExpression": {
                          "id": 6204,
                          "name": "accountId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6196,
                          "src": "2707:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "2701:16:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ListMetadata_$6002_storage_$",
                          "typeString": "mapping(uint256 => struct MetadataRegistry.ListMetadata storage ref)"
                        }
                      },
                      "id": 6207,
                      "indexExpression": {
                        "id": 6206,
                        "name": "listId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6198,
                        "src": "2718:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2701:24:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ListMetadata_$6002_storage",
                        "typeString": "struct MetadataRegistry.ListMetadata storage ref"
                      }
                    },
                    "id": 6208,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "used",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 6001,
                    "src": "2701:29:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 6202,
                  "id": 6209,
                  "nodeType": "Return",
                  "src": "2694:36:21"
                }
              ]
            },
            "functionSelector": "891d245e",
            "id": 6211,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isExistMetadataList",
            "nameLocation": "2603:19:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6199,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6196,
                  "mutability": "mutable",
                  "name": "accountId",
                  "nameLocation": "2631:9:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6211,
                  "src": "2623:17:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6195,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2623:7:21",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6198,
                  "mutability": "mutable",
                  "name": "listId",
                  "nameLocation": "2650:6:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6211,
                  "src": "2642:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6197,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2642:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2622:35:21"
            },
            "returnParameters": {
              "id": 6202,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6201,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6211,
                  "src": "2679:4:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6200,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2679:4:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2678:6:21"
            },
            "scope": 7414,
            "src": "2594:143:21",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6237,
              "nodeType": "Block",
              "src": "2891:105:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6227,
                        "name": "listId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6213,
                        "src": "2925:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 6228,
                        "name": "algType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6215,
                        "src": "2933:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        }
                      },
                      {
                        "id": 6229,
                        "name": "version",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6217,
                        "src": "2942:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        }
                      },
                      {
                        "id": 6230,
                        "name": "issuerVc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6219,
                        "src": "2951:8:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 6231,
                        "name": "traceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6221,
                        "src": "2961:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 6232,
                        "name": "caoDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6223,
                        "src": "2970:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "expression": {
                          "id": 6233,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "2978:3:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 6234,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "2978:10:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        },
                        {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6226,
                      "name": "newMetadataListInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6355,
                      "src": "2901:23:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes2_$_t_bytes2_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (uint256,bytes2,bytes2,bytes memory,string memory,string memory,address)"
                      }
                    },
                    "id": 6235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2901:88:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6236,
                  "nodeType": "ExpressionStatement",
                  "src": "2901:88:21"
                }
              ]
            },
            "functionSelector": "8f6ece41",
            "id": 6238,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "newMetadataList",
            "nameLocation": "2752:15:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6224,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6213,
                  "mutability": "mutable",
                  "name": "listId",
                  "nameLocation": "2776:6:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6238,
                  "src": "2768:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6212,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2768:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6215,
                  "mutability": "mutable",
                  "name": "algType",
                  "nameLocation": "2791:7:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6238,
                  "src": "2784:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  },
                  "typeName": {
                    "id": 6214,
                    "name": "bytes2",
                    "nodeType": "ElementaryTypeName",
                    "src": "2784:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes2",
                      "typeString": "bytes2"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6217,
                  "mutability": "mutable",
                  "name": "version",
                  "nameLocation": "2807:7:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6238,
                  "src": "2800:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  },
                  "typeName": {
                    "id": 6216,
                    "name": "bytes2",
                    "nodeType": "ElementaryTypeName",
                    "src": "2800:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes2",
                      "typeString": "bytes2"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6219,
                  "mutability": "mutable",
                  "name": "issuerVc",
                  "nameLocation": "2829:8:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6238,
                  "src": "2816:21:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6218,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2816:5:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6221,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "2853:7:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6238,
                  "src": "2839:21:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6220,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2839:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6223,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "2876:6:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6238,
                  "src": "2862:20:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6222,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "2862:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2767:116:21"
            },
            "returnParameters": {
              "id": 6225,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2891:0:21"
            },
            "scope": 7414,
            "src": "2743:253:21",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6277,
              "nodeType": "Block",
              "src": "3180:202:21",
              "statements": [
                {
                  "assignments": [
                    6256
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6256,
                      "mutability": "mutable",
                      "name": "operator",
                      "nameLocation": "3198:8:21",
                      "nodeType": "VariableDeclaration",
                      "scope": 6277,
                      "src": "3190:16:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6255,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3190:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6266,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 6261,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "3256:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 6262,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "3256:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 6259,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "3245:3:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 6260,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "src": "3245:10:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 6263,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3245:22:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 6264,
                        "name": "signature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6252,
                        "src": "3269:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 6257,
                        "name": "SignatureVerification",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5427,
                        "src": "3209:21:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SignatureVerification_$5427_$",
                          "typeString": "type(library SignatureVerification)"
                        }
                      },
                      "id": 6258,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "recoverSigner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5426,
                      "src": "3209:35:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes memory,bytes memory) pure returns (address)"
                      }
                    },
                    "id": 6265,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3209:70:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3190:89:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6268,
                        "name": "listId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6240,
                        "src": "3313:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 6269,
                        "name": "algType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6242,
                        "src": "3321:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        }
                      },
                      {
                        "id": 6270,
                        "name": "version",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6244,
                        "src": "3330:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        }
                      },
                      {
                        "id": 6271,
                        "name": "issuerVc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6246,
                        "src": "3339:8:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 6272,
                        "name": "traceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6248,
                        "src": "3349:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 6273,
                        "name": "caoDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6250,
                        "src": "3358:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 6274,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6256,
                        "src": "3366:8:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        },
                        {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6267,
                      "name": "newMetadataListInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6355,
                      "src": "3289:23:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_bytes2_$_t_bytes2_$_t_bytes_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (uint256,bytes2,bytes2,bytes memory,string memory,string memory,address)"
                      }
                    },
                    "id": 6275,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3289:86:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6276,
                  "nodeType": "ExpressionStatement",
                  "src": "3289:86:21"
                }
              ]
            },
            "functionSelector": "579e2b5b",
            "id": 6278,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "newMetadataListSigned",
            "nameLocation": "3011:21:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6253,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6240,
                  "mutability": "mutable",
                  "name": "listId",
                  "nameLocation": "3041:6:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6278,
                  "src": "3033:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6239,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3033:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6242,
                  "mutability": "mutable",
                  "name": "algType",
                  "nameLocation": "3056:7:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6278,
                  "src": "3049:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  },
                  "typeName": {
                    "id": 6241,
                    "name": "bytes2",
                    "nodeType": "ElementaryTypeName",
                    "src": "3049:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes2",
                      "typeString": "bytes2"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6244,
                  "mutability": "mutable",
                  "name": "version",
                  "nameLocation": "3072:7:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6278,
                  "src": "3065:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  },
                  "typeName": {
                    "id": 6243,
                    "name": "bytes2",
                    "nodeType": "ElementaryTypeName",
                    "src": "3065:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes2",
                      "typeString": "bytes2"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6246,
                  "mutability": "mutable",
                  "name": "issuerVc",
                  "nameLocation": "3094:8:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6278,
                  "src": "3081:21:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6245,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3081:5:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6248,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "3118:7:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6278,
                  "src": "3104:21:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6247,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3104:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6250,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "3141:6:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6278,
                  "src": "3127:20:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6249,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3127:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6252,
                  "mutability": "mutable",
                  "name": "signature",
                  "nameLocation": "3162:9:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6278,
                  "src": "3149:22:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6251,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3149:5:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3032:140:21"
            },
            "returnParameters": {
              "id": 6254,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3180:0:21"
            },
            "scope": 7414,
            "src": "3002:380:21",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6354,
              "nodeType": "Block",
              "src": "3563:418:21",
              "statements": [
                {
                  "assignments": [
                    6296
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6296,
                      "mutability": "mutable",
                      "name": "primary",
                      "nameLocation": "3581:7:21",
                      "nodeType": "VariableDeclaration",
                      "scope": 6354,
                      "src": "3573:15:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6295,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3573:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6301,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 6299,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6292,
                        "src": "3617:8:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 6297,
                        "name": "permissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6043,
                        "src": "3591:11:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Permissions_$5358",
                          "typeString": "contract Permissions"
                        }
                      },
                      "id": 6298,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "checkOperator",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 4939,
                      "src": "3591:25:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_address_$",
                        "typeString": "function (address) view external returns (address)"
                      }
                    },
                    "id": 6300,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3591:35:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3573:53:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6309,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3644:28:21",
                        "subExpression": {
                          "expression": {
                            "baseExpression": {
                              "baseExpression": {
                                "id": 6303,
                                "name": "lists",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6031,
                                "src": "3645:5:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ListMetadata_$6002_storage_$_$",
                                  "typeString": "mapping(address => mapping(uint256 => struct MetadataRegistry.ListMetadata storage ref))"
                                }
                              },
                              "id": 6305,
                              "indexExpression": {
                                "id": 6304,
                                "name": "primary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6296,
                                "src": "3651:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3645:14:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ListMetadata_$6002_storage_$",
                                "typeString": "mapping(uint256 => struct MetadataRegistry.ListMetadata storage ref)"
                              }
                            },
                            "id": 6307,
                            "indexExpression": {
                              "id": 6306,
                              "name": "listId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6280,
                              "src": "3660:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "3645:22:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_ListMetadata_$6002_storage",
                              "typeString": "struct MetadataRegistry.ListMetadata storage ref"
                            }
                          },
                          "id": 6308,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "used",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6001,
                          "src": "3645:27:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4c69737420696420616c72656164792075736564",
                        "id": 6310,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3674:22:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c57c76870af50170e56f334aa7d668c01e0f778a9ec2a72d64e4626ef1552d53",
                          "typeString": "literal_string \"List id already used\""
                        },
                        "value": "List id already used"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c57c76870af50170e56f334aa7d668c01e0f778a9ec2a72d64e4626ef1552d53",
                          "typeString": "literal_string \"List id already used\""
                        }
                      ],
                      "id": 6302,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "3636:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6311,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3636:61:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6312,
                  "nodeType": "ExpressionStatement",
                  "src": "3636:61:21"
                },
                {
                  "assignments": [
                    6315
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6315,
                      "mutability": "mutable",
                      "name": "entries",
                      "nameLocation": "3728:7:21",
                      "nodeType": "VariableDeclaration",
                      "scope": 6354,
                      "src": "3707:28:21",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_ListMetadata_$6002_storage_ptr",
                        "typeString": "struct MetadataRegistry.ListMetadata"
                      },
                      "typeName": {
                        "id": 6314,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 6313,
                          "name": "ListMetadata",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 6002,
                          "src": "3707:12:21"
                        },
                        "referencedDeclaration": 6002,
                        "src": "3707:12:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ListMetadata_$6002_storage_ptr",
                          "typeString": "struct MetadataRegistry.ListMetadata"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6321,
                  "initialValue": {
                    "baseExpression": {
                      "baseExpression": {
                        "id": 6316,
                        "name": "lists",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6031,
                        "src": "3738:5:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ListMetadata_$6002_storage_$_$",
                          "typeString": "mapping(address => mapping(uint256 => struct MetadataRegistry.ListMetadata storage ref))"
                        }
                      },
                      "id": 6318,
                      "indexExpression": {
                        "id": 6317,
                        "name": "primary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6296,
                        "src": "3744:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3738:14:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ListMetadata_$6002_storage_$",
                        "typeString": "mapping(uint256 => struct MetadataRegistry.ListMetadata storage ref)"
                      }
                    },
                    "id": 6320,
                    "indexExpression": {
                      "id": 6319,
                      "name": "listId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6280,
                      "src": "3753:6:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3738:22:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_ListMetadata_$6002_storage",
                      "typeString": "struct MetadataRegistry.ListMetadata storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3707:53:21"
                },
                {
                  "expression": {
                    "id": 6326,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 6322,
                        "name": "entries",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6315,
                        "src": "3770:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ListMetadata_$6002_storage_ptr",
                          "typeString": "struct MetadataRegistry.ListMetadata storage pointer"
                        }
                      },
                      "id": 6324,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "version",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5995,
                      "src": "3770:15:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes2",
                        "typeString": "bytes2"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 6325,
                      "name": "version",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6284,
                      "src": "3788:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes2",
                        "typeString": "bytes2"
                      }
                    },
                    "src": "3770:25:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes2",
                      "typeString": "bytes2"
                    }
                  },
                  "id": 6327,
                  "nodeType": "ExpressionStatement",
                  "src": "3770:25:21"
                },
                {
                  "expression": {
                    "id": 6332,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 6328,
                        "name": "entries",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6315,
                        "src": "3805:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ListMetadata_$6002_storage_ptr",
                          "typeString": "struct MetadataRegistry.ListMetadata storage pointer"
                        }
                      },
                      "id": 6330,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "algType",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5997,
                      "src": "3805:15:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes2",
                        "typeString": "bytes2"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 6331,
                      "name": "algType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6282,
                      "src": "3823:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes2",
                        "typeString": "bytes2"
                      }
                    },
                    "src": "3805:25:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes2",
                      "typeString": "bytes2"
                    }
                  },
                  "id": 6333,
                  "nodeType": "ExpressionStatement",
                  "src": "3805:25:21"
                },
                {
                  "expression": {
                    "id": 6338,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 6334,
                        "name": "entries",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6315,
                        "src": "3840:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ListMetadata_$6002_storage_ptr",
                          "typeString": "struct MetadataRegistry.ListMetadata storage pointer"
                        }
                      },
                      "id": 6336,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "issuerVc",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5999,
                      "src": "3840:16:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 6337,
                      "name": "issuerVc",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6286,
                      "src": "3859:8:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "3840:27:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 6339,
                  "nodeType": "ExpressionStatement",
                  "src": "3840:27:21"
                },
                {
                  "expression": {
                    "id": 6344,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 6340,
                        "name": "entries",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6315,
                        "src": "3877:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_ListMetadata_$6002_storage_ptr",
                          "typeString": "struct MetadataRegistry.ListMetadata storage pointer"
                        }
                      },
                      "id": 6342,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "used",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6001,
                      "src": "3877:12:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 6343,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3892:4:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "3877:19:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 6345,
                  "nodeType": "ExpressionStatement",
                  "src": "3877:19:21"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 6347,
                        "name": "primary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6296,
                        "src": "3931:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 6348,
                        "name": "issuerVc",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6286,
                        "src": "3940:8:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 6349,
                        "name": "listId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6280,
                        "src": "3950:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 6350,
                        "name": "traceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6288,
                        "src": "3958:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 6351,
                        "name": "caoDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6290,
                        "src": "3967:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 6346,
                      "name": "CreatedMetadataList",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6055,
                      "src": "3911:19:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,bytes memory,uint256,string memory,string memory)"
                      }
                    },
                    "id": 6352,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3911:63:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6353,
                  "nodeType": "EmitStatement",
                  "src": "3906:68:21"
                }
              ]
            },
            "id": 6355,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "newMetadataListInternal",
            "nameLocation": "3397:23:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6293,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6280,
                  "mutability": "mutable",
                  "name": "listId",
                  "nameLocation": "3429:6:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6355,
                  "src": "3421:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6279,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3421:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6282,
                  "mutability": "mutable",
                  "name": "algType",
                  "nameLocation": "3444:7:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6355,
                  "src": "3437:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  },
                  "typeName": {
                    "id": 6281,
                    "name": "bytes2",
                    "nodeType": "ElementaryTypeName",
                    "src": "3437:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes2",
                      "typeString": "bytes2"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6284,
                  "mutability": "mutable",
                  "name": "version",
                  "nameLocation": "3460:7:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6355,
                  "src": "3453:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  },
                  "typeName": {
                    "id": 6283,
                    "name": "bytes2",
                    "nodeType": "ElementaryTypeName",
                    "src": "3453:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes2",
                      "typeString": "bytes2"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6286,
                  "mutability": "mutable",
                  "name": "issuerVc",
                  "nameLocation": "3482:8:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6355,
                  "src": "3469:21:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6285,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "3469:5:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6288,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "3506:7:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6355,
                  "src": "3492:21:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6287,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3492:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6290,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "3529:6:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6355,
                  "src": "3515:20:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6289,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "3515:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6292,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "3545:8:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6355,
                  "src": "3537:16:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6291,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3537:7:21",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3420:134:21"
            },
            "returnParameters": {
              "id": 6294,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3563:0:21"
            },
            "scope": 7414,
            "src": "3388:593:21",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 6381,
              "nodeType": "Block",
              "src": "4197:113:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6371,
                        "name": "credentialType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6357,
                        "src": "4224:14:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        }
                      },
                      {
                        "id": 6372,
                        "name": "encryptedPublicKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6359,
                        "src": "4240:18:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 6373,
                        "name": "listId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6361,
                        "src": "4260:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 6374,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6363,
                        "src": "4268:5:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      {
                        "id": 6375,
                        "name": "traceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6365,
                        "src": "4275:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 6376,
                        "name": "caoDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6367,
                        "src": "4284:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "expression": {
                          "id": 6377,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "4292:3:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 6378,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "4292:10:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6370,
                      "name": "setEntryInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6521,
                      "src": "4207:16:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes2_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint32_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (bytes2,bytes memory,uint256,uint32,string memory,string memory,address)"
                      }
                    },
                    "id": 6379,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4207:96:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6380,
                  "nodeType": "ExpressionStatement",
                  "src": "4207:96:21"
                }
              ]
            },
            "functionSelector": "92ecd653",
            "id": 6382,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setEntry",
            "nameLocation": "3996:8:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6368,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6357,
                  "mutability": "mutable",
                  "name": "credentialType",
                  "nameLocation": "4021:14:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6382,
                  "src": "4014:21:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  },
                  "typeName": {
                    "id": 6356,
                    "name": "bytes2",
                    "nodeType": "ElementaryTypeName",
                    "src": "4014:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes2",
                      "typeString": "bytes2"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6359,
                  "mutability": "mutable",
                  "name": "encryptedPublicKey",
                  "nameLocation": "4058:18:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6382,
                  "src": "4045:31:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6358,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4045:5:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6361,
                  "mutability": "mutable",
                  "name": "listId",
                  "nameLocation": "4094:6:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6382,
                  "src": "4086:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6360,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4086:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6363,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "4117:5:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6382,
                  "src": "4110:12:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 6362,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4110:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6365,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "4146:7:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6382,
                  "src": "4132:21:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6364,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4132:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6367,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "4177:6:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6382,
                  "src": "4163:20:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6366,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4163:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4004:185:21"
            },
            "returnParameters": {
              "id": 6369,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4197:0:21"
            },
            "scope": 7414,
            "src": "3987:323:21",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6421,
              "nodeType": "Block",
              "src": "4564:210:21",
              "statements": [
                {
                  "assignments": [
                    6400
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6400,
                      "mutability": "mutable",
                      "name": "operator",
                      "nameLocation": "4582:8:21",
                      "nodeType": "VariableDeclaration",
                      "scope": 6421,
                      "src": "4574:16:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6399,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4574:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6410,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 6405,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "4640:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 6406,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "4640:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 6403,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "4629:3:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 6404,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "src": "4629:10:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 6407,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4629:22:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 6408,
                        "name": "signature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6396,
                        "src": "4653:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 6401,
                        "name": "SignatureVerification",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5427,
                        "src": "4593:21:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SignatureVerification_$5427_$",
                          "typeString": "type(library SignatureVerification)"
                        }
                      },
                      "id": 6402,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "recoverSigner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5426,
                      "src": "4593:35:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes memory,bytes memory) pure returns (address)"
                      }
                    },
                    "id": 6409,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4593:70:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4574:89:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6412,
                        "name": "credentialType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6384,
                        "src": "4690:14:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        }
                      },
                      {
                        "id": 6413,
                        "name": "encryptedPublicKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6386,
                        "src": "4706:18:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 6414,
                        "name": "listId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6388,
                        "src": "4726:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 6415,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6390,
                        "src": "4734:5:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      {
                        "id": 6416,
                        "name": "traceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6392,
                        "src": "4741:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 6417,
                        "name": "caoDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6394,
                        "src": "4750:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 6418,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6400,
                        "src": "4758:8:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6411,
                      "name": "setEntryInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6521,
                      "src": "4673:16:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes2_$_t_bytes_memory_ptr_$_t_uint256_$_t_uint32_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (bytes2,bytes memory,uint256,uint32,string memory,string memory,address)"
                      }
                    },
                    "id": 6419,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4673:94:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6420,
                  "nodeType": "ExpressionStatement",
                  "src": "4673:94:21"
                }
              ]
            },
            "functionSelector": "c50675d3",
            "id": 6422,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setEntrySigned",
            "nameLocation": "4325:14:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6397,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6384,
                  "mutability": "mutable",
                  "name": "credentialType",
                  "nameLocation": "4356:14:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6422,
                  "src": "4349:21:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  },
                  "typeName": {
                    "id": 6383,
                    "name": "bytes2",
                    "nodeType": "ElementaryTypeName",
                    "src": "4349:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes2",
                      "typeString": "bytes2"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6386,
                  "mutability": "mutable",
                  "name": "encryptedPublicKey",
                  "nameLocation": "4393:18:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6422,
                  "src": "4380:31:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6385,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4380:5:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6388,
                  "mutability": "mutable",
                  "name": "listId",
                  "nameLocation": "4429:6:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6422,
                  "src": "4421:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6387,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4421:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6390,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "4452:5:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6422,
                  "src": "4445:12:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 6389,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4445:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6392,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "4481:7:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6422,
                  "src": "4467:21:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6391,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4467:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6394,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "4512:6:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6422,
                  "src": "4498:20:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6393,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4498:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6396,
                  "mutability": "mutable",
                  "name": "signature",
                  "nameLocation": "4541:9:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6422,
                  "src": "4528:22:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6395,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4528:5:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4339:217:21"
            },
            "returnParameters": {
              "id": 6398,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4564:0:21"
            },
            "scope": 7414,
            "src": "4316:458:21",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6520,
              "nodeType": "Block",
              "src": "5025:660:21",
              "statements": [
                {
                  "assignments": [
                    6440
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6440,
                      "mutability": "mutable",
                      "name": "primary",
                      "nameLocation": "5043:7:21",
                      "nodeType": "VariableDeclaration",
                      "scope": 6520,
                      "src": "5035:15:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6439,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5035:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6445,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 6442,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6436,
                        "src": "5085:8:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 6443,
                        "name": "credentialType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6424,
                        "src": "5095:14:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        }
                      ],
                      "id": 6441,
                      "name": "checkOperatorWithCredentialType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7018,
                      "src": "5053:31:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_address_$_t_bytes2_$returns$_t_address_$",
                        "typeString": "function (address,bytes2) view returns (address)"
                      }
                    },
                    "id": 6444,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5053:57:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5035:75:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "id": 6449,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 6447,
                          "name": "index",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6430,
                          "src": "5128:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "hexValue": "3130303030",
                          "id": 6448,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5136:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_10000_by_1",
                            "typeString": "int_const 10000"
                          },
                          "value": "10000"
                        },
                        "src": "5128:13:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e76616c696420696e646578",
                        "id": 6450,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5143:15:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_32cc480c4f0e15e5ce7060ec5e004886ed5a15831cba1ff1aa7cb787be55bb60",
                          "typeString": "literal_string \"Invalid index\""
                        },
                        "value": "Invalid index"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_32cc480c4f0e15e5ce7060ec5e004886ed5a15831cba1ff1aa7cb787be55bb60",
                          "typeString": "literal_string \"Invalid index\""
                        }
                      ],
                      "id": 6446,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "5120:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6451,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5120:39:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6452,
                  "nodeType": "ExpressionStatement",
                  "src": "5120:39:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6462,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "5177:39:21",
                        "subExpression": {
                          "expression": {
                            "baseExpression": {
                              "baseExpression": {
                                "baseExpression": {
                                  "id": 6454,
                                  "name": "indexUsed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6040,
                                  "src": "5178:9:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_CredentialEntry_$5993_storage_$_$_$",
                                    "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct MetadataRegistry.CredentialEntry storage ref)))"
                                  }
                                },
                                "id": 6456,
                                "indexExpression": {
                                  "id": 6455,
                                  "name": "primary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6440,
                                  "src": "5188:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "5178:18:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_CredentialEntry_$5993_storage_$_$",
                                  "typeString": "mapping(uint256 => mapping(uint32 => struct MetadataRegistry.CredentialEntry storage ref))"
                                }
                              },
                              "id": 6458,
                              "indexExpression": {
                                "id": 6457,
                                "name": "listId",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6428,
                                "src": "5197:6:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5178:26:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_CredentialEntry_$5993_storage_$",
                                "typeString": "mapping(uint32 => struct MetadataRegistry.CredentialEntry storage ref)"
                              }
                            },
                            "id": 6460,
                            "indexExpression": {
                              "id": 6459,
                              "name": "index",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6430,
                              "src": "5205:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5178:33:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_CredentialEntry_$5993_storage",
                              "typeString": "struct MetadataRegistry.CredentialEntry storage ref"
                            }
                          },
                          "id": 6461,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "used",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5992,
                          "src": "5178:38:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "496e64657820616c72656164792075736564",
                        "id": 6463,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5218:20:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ddf5de362b31a0f65f67c58bfa9515cbad454ca52b26577ff3fd46947e49aaf3",
                          "typeString": "literal_string \"Index already used\""
                        },
                        "value": "Index already used"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ddf5de362b31a0f65f67c58bfa9515cbad454ca52b26577ff3fd46947e49aaf3",
                          "typeString": "literal_string \"Index already used\""
                        }
                      ],
                      "id": 6453,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "5169:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5169:70:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6465,
                  "nodeType": "ExpressionStatement",
                  "src": "5169:70:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 6467,
                              "name": "lists",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6031,
                              "src": "5257:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ListMetadata_$6002_storage_$_$",
                                "typeString": "mapping(address => mapping(uint256 => struct MetadataRegistry.ListMetadata storage ref))"
                              }
                            },
                            "id": 6469,
                            "indexExpression": {
                              "id": 6468,
                              "name": "primary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6440,
                              "src": "5263:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5257:14:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ListMetadata_$6002_storage_$",
                              "typeString": "mapping(uint256 => struct MetadataRegistry.ListMetadata storage ref)"
                            }
                          },
                          "id": 6471,
                          "indexExpression": {
                            "id": 6470,
                            "name": "listId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6428,
                            "src": "5272:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5257:22:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ListMetadata_$6002_storage",
                            "typeString": "struct MetadataRegistry.ListMetadata storage ref"
                          }
                        },
                        "id": 6472,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "used",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 6001,
                        "src": "5257:27:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4c697374204964206e6f74206176656c6961626c65",
                        "id": 6473,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5286:23:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_41b8b6374a309ddf81ce65f2d06dc359c5aae9c1bcc0f9806cf2a6245f4d39e4",
                          "typeString": "literal_string \"List Id not aveliable\""
                        },
                        "value": "List Id not aveliable"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_41b8b6374a309ddf81ce65f2d06dc359c5aae9c1bcc0f9806cf2a6245f4d39e4",
                          "typeString": "literal_string \"List Id not aveliable\""
                        }
                      ],
                      "id": 6466,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "5249:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6474,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5249:61:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6475,
                  "nodeType": "ExpressionStatement",
                  "src": "5249:61:21"
                },
                {
                  "assignments": [
                    6478
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6478,
                      "mutability": "mutable",
                      "name": "entryDataLocal",
                      "nameLocation": "5344:14:21",
                      "nodeType": "VariableDeclaration",
                      "scope": 6520,
                      "src": "5320:38:21",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_CredentialEntry_$5993_storage_ptr",
                        "typeString": "struct MetadataRegistry.CredentialEntry"
                      },
                      "typeName": {
                        "id": 6477,
                        "nodeType": "UserDefinedTypeName",
                        "pathNode": {
                          "id": 6476,
                          "name": "CredentialEntry",
                          "nodeType": "IdentifierPath",
                          "referencedDeclaration": 5993,
                          "src": "5320:15:21"
                        },
                        "referencedDeclaration": 5993,
                        "src": "5320:15:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CredentialEntry_$5993_storage_ptr",
                          "typeString": "struct MetadataRegistry.CredentialEntry"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6486,
                  "initialValue": {
                    "baseExpression": {
                      "baseExpression": {
                        "baseExpression": {
                          "id": 6479,
                          "name": "indexUsed",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6040,
                          "src": "5361:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_CredentialEntry_$5993_storage_$_$_$",
                            "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct MetadataRegistry.CredentialEntry storage ref)))"
                          }
                        },
                        "id": 6481,
                        "indexExpression": {
                          "id": 6480,
                          "name": "primary",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6440,
                          "src": "5371:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5361:18:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_CredentialEntry_$5993_storage_$_$",
                          "typeString": "mapping(uint256 => mapping(uint32 => struct MetadataRegistry.CredentialEntry storage ref))"
                        }
                      },
                      "id": 6483,
                      "indexExpression": {
                        "id": 6482,
                        "name": "listId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6428,
                        "src": "5380:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "5361:26:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_CredentialEntry_$5993_storage_$",
                        "typeString": "mapping(uint32 => struct MetadataRegistry.CredentialEntry storage ref)"
                      }
                    },
                    "id": 6485,
                    "indexExpression": {
                      "id": 6484,
                      "name": "index",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6430,
                      "src": "5388:5:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5361:33:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_CredentialEntry_$5993_storage",
                      "typeString": "struct MetadataRegistry.CredentialEntry storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5320:74:21"
                },
                {
                  "expression": {
                    "id": 6491,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 6487,
                        "name": "entryDataLocal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6478,
                        "src": "5404:14:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CredentialEntry_$5993_storage_ptr",
                          "typeString": "struct MetadataRegistry.CredentialEntry storage pointer"
                        }
                      },
                      "id": 6489,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "credentialType",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5988,
                      "src": "5404:29:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes2",
                        "typeString": "bytes2"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 6490,
                      "name": "credentialType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6424,
                      "src": "5436:14:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes2",
                        "typeString": "bytes2"
                      }
                    },
                    "src": "5404:46:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes2",
                      "typeString": "bytes2"
                    }
                  },
                  "id": 6492,
                  "nodeType": "ExpressionStatement",
                  "src": "5404:46:21"
                },
                {
                  "expression": {
                    "id": 6497,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 6493,
                        "name": "entryDataLocal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6478,
                        "src": "5460:14:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CredentialEntry_$5993_storage_ptr",
                          "typeString": "struct MetadataRegistry.CredentialEntry storage pointer"
                        }
                      },
                      "id": 6495,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "encryptedPublicKey",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5990,
                      "src": "5460:33:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_storage",
                        "typeString": "bytes storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "id": 6496,
                      "name": "encryptedPublicKey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6426,
                      "src": "5496:18:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes memory"
                      }
                    },
                    "src": "5460:54:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage",
                      "typeString": "bytes storage ref"
                    }
                  },
                  "id": 6498,
                  "nodeType": "ExpressionStatement",
                  "src": "5460:54:21"
                },
                {
                  "expression": {
                    "id": 6503,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "expression": {
                        "id": 6499,
                        "name": "entryDataLocal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6478,
                        "src": "5524:14:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_CredentialEntry_$5993_storage_ptr",
                          "typeString": "struct MetadataRegistry.CredentialEntry storage pointer"
                        }
                      },
                      "id": 6501,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "used",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5992,
                      "src": "5524:19:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "hexValue": "74727565",
                      "id": 6502,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5546:4:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "5524:26:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 6504,
                  "nodeType": "ExpressionStatement",
                  "src": "5524:26:21"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 6506,
                        "name": "primary",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6440,
                        "src": "5589:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "expression": {
                          "baseExpression": {
                            "baseExpression": {
                              "id": 6507,
                              "name": "lists",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6031,
                              "src": "5598:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ListMetadata_$6002_storage_$_$",
                                "typeString": "mapping(address => mapping(uint256 => struct MetadataRegistry.ListMetadata storage ref))"
                              }
                            },
                            "id": 6509,
                            "indexExpression": {
                              "id": 6508,
                              "name": "primary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6440,
                              "src": "5604:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5598:14:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ListMetadata_$6002_storage_$",
                              "typeString": "mapping(uint256 => struct MetadataRegistry.ListMetadata storage ref)"
                            }
                          },
                          "id": 6511,
                          "indexExpression": {
                            "id": 6510,
                            "name": "listId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6428,
                            "src": "5613:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5598:22:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_ListMetadata_$6002_storage",
                            "typeString": "struct MetadataRegistry.ListMetadata storage ref"
                          }
                        },
                        "id": 6512,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "issuerVc",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 5999,
                        "src": "5598:31:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        }
                      },
                      {
                        "id": 6513,
                        "name": "listId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6428,
                        "src": "5631:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 6514,
                        "name": "credentialType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6424,
                        "src": "5639:14:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        }
                      },
                      {
                        "id": 6515,
                        "name": "index",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6430,
                        "src": "5655:5:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      {
                        "id": 6516,
                        "name": "traceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6432,
                        "src": "5662:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 6517,
                        "name": "caoDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6434,
                        "src": "5671:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes_storage",
                          "typeString": "bytes storage ref"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        },
                        {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "id": 6505,
                      "name": "AddedCredentialMetadata",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6071,
                      "src": "5565:23:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes2_$_t_uint32_$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (address,bytes memory,uint256,bytes2,uint32,string memory,string memory)"
                      }
                    },
                    "id": 6518,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5565:113:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6519,
                  "nodeType": "EmitStatement",
                  "src": "5560:118:21"
                }
              ]
            },
            "id": 6521,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setEntryInternal",
            "nameLocation": "4789:16:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6437,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6424,
                  "mutability": "mutable",
                  "name": "credentialType",
                  "nameLocation": "4822:14:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6521,
                  "src": "4815:21:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  },
                  "typeName": {
                    "id": 6423,
                    "name": "bytes2",
                    "nodeType": "ElementaryTypeName",
                    "src": "4815:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes2",
                      "typeString": "bytes2"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6426,
                  "mutability": "mutable",
                  "name": "encryptedPublicKey",
                  "nameLocation": "4859:18:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6521,
                  "src": "4846:31:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6425,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "4846:5:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6428,
                  "mutability": "mutable",
                  "name": "listId",
                  "nameLocation": "4895:6:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6521,
                  "src": "4887:14:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6427,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4887:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6430,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "4918:5:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6521,
                  "src": "4911:12:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  },
                  "typeName": {
                    "id": 6429,
                    "name": "uint32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4911:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint32",
                      "typeString": "uint32"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6432,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "4947:7:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6521,
                  "src": "4933:21:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6431,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4933:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6434,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "4978:6:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6521,
                  "src": "4964:20:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6433,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "4964:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6436,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "5002:8:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6521,
                  "src": "4994:16:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6435,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4994:7:21",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "4805:211:21"
            },
            "returnParameters": {
              "id": 6438,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5025:0:21"
            },
            "scope": 7414,
            "src": "4780:905:21",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 6558,
              "nodeType": "Block",
              "src": "5761:229:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 6533,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 6528,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "5779:3:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 6529,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "5779:10:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 6530,
                              "name": "Coupon",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5986,
                              "src": "5793:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VerificationCoupon_$5974",
                                "typeString": "contract VerificationCoupon"
                              }
                            },
                            "id": 6531,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getVNF",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5566,
                            "src": "5793:13:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 6532,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5793:15:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5779:29:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5468652063616c6c6572206973206e6f7420564e46",
                        "id": 6534,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5810:23:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ac07a71f12c270c07ea84bb01e6423293637c251609564d208901a72bdb04be8",
                          "typeString": "literal_string \"The caller is not VNF\""
                        },
                        "value": "The caller is not VNF"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ac07a71f12c270c07ea84bb01e6423293637c251609564d208901a72bdb04be8",
                          "typeString": "literal_string \"The caller is not VNF\""
                        }
                      ],
                      "id": 6527,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "5771:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6535,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5771:63:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6536,
                  "nodeType": "ExpressionStatement",
                  "src": "5771:63:21"
                },
                {
                  "body": {
                    "id": 6556,
                    "nodeType": "Block",
                    "src": "5905:79:21",
                    "statements": [
                      {
                        "expression": {
                          "id": 6554,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "baseExpression": {
                              "id": 6548,
                              "name": "freeCredentialTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6024,
                              "src": "5919:19:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes2_$_t_bool_$",
                                "typeString": "mapping(bytes2 => bool)"
                              }
                            },
                            "id": 6552,
                            "indexExpression": {
                              "baseExpression": {
                                "id": 6549,
                                "name": "freeCredentialTypesList",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6524,
                                "src": "5939:23:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes2_$dyn_memory_ptr",
                                  "typeString": "bytes2[] memory"
                                }
                              },
                              "id": 6551,
                              "indexExpression": {
                                "id": 6550,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6538,
                                "src": "5963:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "5939:26:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes2",
                                "typeString": "bytes2"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "5919:47:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "hexValue": "74727565",
                            "id": 6553,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5969:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "5919:54:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6555,
                        "nodeType": "ExpressionStatement",
                        "src": "5919:54:21"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 6544,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 6541,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6538,
                      "src": "5864:1:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 6542,
                        "name": "freeCredentialTypesList",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6524,
                        "src": "5868:23:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes2_$dyn_memory_ptr",
                          "typeString": "bytes2[] memory"
                        }
                      },
                      "id": 6543,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "5868:30:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5864:34:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 6557,
                  "initializationExpression": {
                    "assignments": [
                      6538
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 6538,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "5857:1:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 6557,
                        "src": "5849:9:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6537,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "5849:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 6540,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 6539,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5861:1:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "5849:13:21"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 6546,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "5900:3:21",
                      "subExpression": {
                        "id": 6545,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6538,
                        "src": "5900:1:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6547,
                    "nodeType": "ExpressionStatement",
                    "src": "5900:3:21"
                  },
                  "nodeType": "ForStatement",
                  "src": "5844:140:21"
                }
              ]
            },
            "functionSelector": "a2f41a5a",
            "id": 6559,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "addFreeTypes",
            "nameLocation": "5700:12:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6525,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6524,
                  "mutability": "mutable",
                  "name": "freeCredentialTypesList",
                  "nameLocation": "5729:23:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6559,
                  "src": "5713:39:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes2_$dyn_memory_ptr",
                    "typeString": "bytes2[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6522,
                      "name": "bytes2",
                      "nodeType": "ElementaryTypeName",
                      "src": "5713:6:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes2",
                        "typeString": "bytes2"
                      }
                    },
                    "id": 6523,
                    "nodeType": "ArrayTypeName",
                    "src": "5713:8:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes2_$dyn_storage_ptr",
                      "typeString": "bytes2[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "5712:41:21"
            },
            "returnParameters": {
              "id": 6526,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5761:0:21"
            },
            "scope": 7414,
            "src": "5691:299:21",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6595,
              "nodeType": "Block",
              "src": "6069:229:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 6571,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "expression": {
                            "id": 6566,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967281,
                            "src": "6087:3:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 6567,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "src": "6087:10:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "id": 6568,
                              "name": "Coupon",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5986,
                              "src": "6101:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_VerificationCoupon_$5974",
                                "typeString": "contract VerificationCoupon"
                              }
                            },
                            "id": 6569,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getVNF",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5566,
                            "src": "6101:13:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                              "typeString": "function () view external returns (address)"
                            }
                          },
                          "id": 6570,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6101:15:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "6087:29:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "5468652063616c6c6572206973206e6f7420564e46",
                        "id": 6572,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6118:23:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ac07a71f12c270c07ea84bb01e6423293637c251609564d208901a72bdb04be8",
                          "typeString": "literal_string \"The caller is not VNF\""
                        },
                        "value": "The caller is not VNF"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ac07a71f12c270c07ea84bb01e6423293637c251609564d208901a72bdb04be8",
                          "typeString": "literal_string \"The caller is not VNF\""
                        }
                      ],
                      "id": 6565,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "6079:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6573,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6079:63:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6574,
                  "nodeType": "ExpressionStatement",
                  "src": "6079:63:21"
                },
                {
                  "body": {
                    "id": 6593,
                    "nodeType": "Block",
                    "src": "6213:79:21",
                    "statements": [
                      {
                        "expression": {
                          "id": 6591,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "6227:54:21",
                          "subExpression": {
                            "baseExpression": {
                              "id": 6586,
                              "name": "freeCredentialTypes",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6024,
                              "src": "6234:19:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes2_$_t_bool_$",
                                "typeString": "mapping(bytes2 => bool)"
                              }
                            },
                            "id": 6590,
                            "indexExpression": {
                              "baseExpression": {
                                "id": 6587,
                                "name": "freeCredentialTypesList",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6562,
                                "src": "6254:23:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_bytes2_$dyn_memory_ptr",
                                  "typeString": "bytes2[] memory"
                                }
                              },
                              "id": 6589,
                              "indexExpression": {
                                "id": 6588,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6576,
                                "src": "6278:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6254:26:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes2",
                                "typeString": "bytes2"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "6234:47:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6592,
                        "nodeType": "ExpressionStatement",
                        "src": "6227:54:21"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 6582,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 6579,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6576,
                      "src": "6172:1:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 6580,
                        "name": "freeCredentialTypesList",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6562,
                        "src": "6176:23:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_bytes2_$dyn_memory_ptr",
                          "typeString": "bytes2[] memory"
                        }
                      },
                      "id": 6581,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "6176:30:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6172:34:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 6594,
                  "initializationExpression": {
                    "assignments": [
                      6576
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 6576,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "6165:1:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 6594,
                        "src": "6157:9:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6575,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6157:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 6578,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 6577,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6169:1:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6157:13:21"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 6584,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "6208:3:21",
                      "subExpression": {
                        "id": 6583,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6576,
                        "src": "6208:1:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6585,
                    "nodeType": "ExpressionStatement",
                    "src": "6208:3:21"
                  },
                  "nodeType": "ForStatement",
                  "src": "6152:140:21"
                }
              ]
            },
            "functionSelector": "2f9a6d80",
            "id": 6596,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "removeFreeTypes",
            "nameLocation": "6005:15:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6563,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6562,
                  "mutability": "mutable",
                  "name": "freeCredentialTypesList",
                  "nameLocation": "6037:23:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6596,
                  "src": "6021:39:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes2_$dyn_memory_ptr",
                    "typeString": "bytes2[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6560,
                      "name": "bytes2",
                      "nodeType": "ElementaryTypeName",
                      "src": "6021:6:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes2",
                        "typeString": "bytes2"
                      }
                    },
                    "id": 6561,
                    "nodeType": "ArrayTypeName",
                    "src": "6021:8:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes2_$dyn_storage_ptr",
                      "typeString": "bytes2[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6020:41:21"
            },
            "returnParameters": {
              "id": 6564,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6069:0:21"
            },
            "scope": 7414,
            "src": "5996:302:21",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6607,
              "nodeType": "Block",
              "src": "6383:59:21",
              "statements": [
                {
                  "expression": {
                    "baseExpression": {
                      "id": 6603,
                      "name": "freeCredentialTypes",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6024,
                      "src": "6400:19:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes2_$_t_bool_$",
                        "typeString": "mapping(bytes2 => bool)"
                      }
                    },
                    "id": 6605,
                    "indexExpression": {
                      "id": 6604,
                      "name": "credentialType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6598,
                      "src": "6420:14:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes2",
                        "typeString": "bytes2"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6400:35:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 6602,
                  "id": 6606,
                  "nodeType": "Return",
                  "src": "6393:42:21"
                }
              ]
            },
            "functionSelector": "9448cc04",
            "id": 6608,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isFreeCredentialType",
            "nameLocation": "6313:20:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6599,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6598,
                  "mutability": "mutable",
                  "name": "credentialType",
                  "nameLocation": "6341:14:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6608,
                  "src": "6334:21:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  },
                  "typeName": {
                    "id": 6597,
                    "name": "bytes2",
                    "nodeType": "ElementaryTypeName",
                    "src": "6334:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes2",
                      "typeString": "bytes2"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6333:23:21"
            },
            "returnParameters": {
              "id": 6602,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6601,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6608,
                  "src": "6378:4:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6600,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6378:4:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6377:6:21"
            },
            "scope": 7414,
            "src": "6304:138:21",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6643,
              "nodeType": "Block",
              "src": "6538:205:21",
              "statements": [
                {
                  "body": {
                    "id": 6639,
                    "nodeType": "Block",
                    "src": "6593:123:21",
                    "statements": [
                      {
                        "condition": {
                          "id": 6634,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "6611:48:21",
                          "subExpression": {
                            "arguments": [
                              {
                                "expression": {
                                  "baseExpression": {
                                    "id": 6629,
                                    "name": "entries",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6612,
                                    "src": "6633:7:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct MetadataRegistry.CredentialMetadata memory[] memory"
                                    }
                                  },
                                  "id": 6631,
                                  "indexExpression": {
                                    "id": 6630,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6618,
                                    "src": "6641:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6633:10:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CredentialMetadata_$6020_memory_ptr",
                                    "typeString": "struct MetadataRegistry.CredentialMetadata memory"
                                  }
                                },
                                "id": 6632,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "credentialType",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6013,
                                "src": "6633:25:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes2",
                                  "typeString": "bytes2"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes2",
                                  "typeString": "bytes2"
                                }
                              ],
                              "id": 6628,
                              "name": "isFreeCredentialType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6608,
                              "src": "6612:20:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_bytes2_$returns$_t_bool_$",
                                "typeString": "function (bytes2) view returns (bool)"
                              }
                            },
                            "id": 6633,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6612:47:21",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 6638,
                        "nodeType": "IfStatement",
                        "src": "6607:99:21",
                        "trueBody": {
                          "id": 6637,
                          "nodeType": "Block",
                          "src": "6661:45:21",
                          "statements": [
                            {
                              "expression": {
                                "hexValue": "66616c7365",
                                "id": 6635,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "bool",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6686:5:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "value": "false"
                              },
                              "functionReturnParameters": 6616,
                              "id": 6636,
                              "nodeType": "Return",
                              "src": "6679:12:21"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 6624,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 6621,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6618,
                      "src": "6568:1:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 6622,
                        "name": "entries",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6612,
                        "src": "6572:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct MetadataRegistry.CredentialMetadata memory[] memory"
                        }
                      },
                      "id": 6623,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "6572:14:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6568:18:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 6640,
                  "initializationExpression": {
                    "assignments": [
                      6618
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 6618,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "6561:1:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 6640,
                        "src": "6553:9:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6617,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6553:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 6620,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 6619,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6565:1:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6553:13:21"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 6626,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "6588:3:21",
                      "subExpression": {
                        "id": 6625,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6618,
                        "src": "6588:1:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6627,
                    "nodeType": "ExpressionStatement",
                    "src": "6588:3:21"
                  },
                  "nodeType": "ForStatement",
                  "src": "6548:168:21"
                },
                {
                  "expression": {
                    "hexValue": "74727565",
                    "id": 6641,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6732:4:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 6616,
                  "id": 6642,
                  "nodeType": "Return",
                  "src": "6725:11:21"
                }
              ]
            },
            "id": 6644,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isFreeGetEntries",
            "nameLocation": "6457:16:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6613,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6612,
                  "mutability": "mutable",
                  "name": "entries",
                  "nameLocation": "6502:7:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6644,
                  "src": "6474:35:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct MetadataRegistry.CredentialMetadata[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6610,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 6609,
                        "name": "CredentialMetadata",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 6020,
                        "src": "6474:18:21"
                      },
                      "referencedDeclaration": 6020,
                      "src": "6474:18:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_CredentialMetadata_$6020_storage_ptr",
                        "typeString": "struct MetadataRegistry.CredentialMetadata"
                      }
                    },
                    "id": 6611,
                    "nodeType": "ArrayTypeName",
                    "src": "6474:20:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_storage_$dyn_storage_ptr",
                      "typeString": "struct MetadataRegistry.CredentialMetadata[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6473:37:21"
            },
            "returnParameters": {
              "id": 6616,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6615,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6644,
                  "src": "6533:4:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6614,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6533:4:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6532:6:21"
            },
            "scope": 7414,
            "src": "6448:295:21",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 6820,
              "nodeType": "Block",
              "src": "6880:1055:21",
              "statements": [
                {
                  "assignments": [
                    6659
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6659,
                      "mutability": "mutable",
                      "name": "entries",
                      "nameLocation": "6918:7:21",
                      "nodeType": "VariableDeclaration",
                      "scope": 6820,
                      "src": "6890:35:21",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct MetadataRegistry.CredentialMetadata[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6657,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6656,
                            "name": "CredentialMetadata",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6020,
                            "src": "6890:18:21"
                          },
                          "referencedDeclaration": 6020,
                          "src": "6890:18:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CredentialMetadata_$6020_storage_ptr",
                            "typeString": "struct MetadataRegistry.CredentialMetadata"
                          }
                        },
                        "id": 6658,
                        "nodeType": "ArrayTypeName",
                        "src": "6890:20:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_storage_$dyn_storage_ptr",
                          "typeString": "struct MetadataRegistry.CredentialMetadata[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6667,
                  "initialValue": {
                    "arguments": [
                      {
                        "expression": {
                          "id": 6664,
                          "name": "_entryIndexes",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6648,
                          "src": "6966:13:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                            "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                          }
                        },
                        "id": 6665,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "src": "6966:20:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6663,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "6928:24:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (struct MetadataRegistry.CredentialMetadata memory[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6661,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6660,
                            "name": "CredentialMetadata",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6020,
                            "src": "6932:18:21"
                          },
                          "referencedDeclaration": 6020,
                          "src": "6932:18:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CredentialMetadata_$6020_storage_ptr",
                            "typeString": "struct MetadataRegistry.CredentialMetadata"
                          }
                        },
                        "id": 6662,
                        "nodeType": "ArrayTypeName",
                        "src": "6932:20:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_storage_$dyn_storage_ptr",
                          "typeString": "struct MetadataRegistry.CredentialMetadata[]"
                        }
                      }
                    },
                    "id": 6666,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6928:68:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                      "typeString": "struct MetadataRegistry.CredentialMetadata memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6890:106:21"
                },
                {
                  "body": {
                    "id": 6816,
                    "nodeType": "Block",
                    "src": "7057:848:21",
                    "statements": [
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 6680,
                                    "name": "lists",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6031,
                                    "src": "7079:5:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ListMetadata_$6002_storage_$_$",
                                      "typeString": "mapping(address => mapping(uint256 => struct MetadataRegistry.ListMetadata storage ref))"
                                    }
                                  },
                                  "id": 6685,
                                  "indexExpression": {
                                    "expression": {
                                      "baseExpression": {
                                        "id": 6681,
                                        "name": "_entryIndexes",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6648,
                                        "src": "7085:13:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                                        }
                                      },
                                      "id": 6683,
                                      "indexExpression": {
                                        "id": 6682,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6669,
                                        "src": "7099:1:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "7085:16:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CredentialIdentifier_$6009_memory_ptr",
                                        "typeString": "struct MetadataRegistry.CredentialIdentifier memory"
                                      }
                                    },
                                    "id": 6684,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accountId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6004,
                                    "src": "7085:26:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7079:33:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ListMetadata_$6002_storage_$",
                                    "typeString": "mapping(uint256 => struct MetadataRegistry.ListMetadata storage ref)"
                                  }
                                },
                                "id": 6690,
                                "indexExpression": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 6686,
                                      "name": "_entryIndexes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6648,
                                      "src": "7113:13:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                                      }
                                    },
                                    "id": 6688,
                                    "indexExpression": {
                                      "id": 6687,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6669,
                                      "src": "7127:1:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7113:16:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CredentialIdentifier_$6009_memory_ptr",
                                      "typeString": "struct MetadataRegistry.CredentialIdentifier memory"
                                    }
                                  },
                                  "id": 6689,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "listId",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6006,
                                  "src": "7113:23:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7079:58:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_ListMetadata_$6002_storage",
                                  "typeString": "struct MetadataRegistry.ListMetadata storage ref"
                                }
                              },
                              "id": 6691,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "used",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6001,
                              "src": "7079:63:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "4c697374206964206e6f742075736564",
                              "id": 6692,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7144:18:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_6fa0b2c1699635dde7e841a535d59942efd59d076beaa50d6f68606bcaf3d16c",
                                "typeString": "literal_string \"List id not used\""
                              },
                              "value": "List id not used"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_6fa0b2c1699635dde7e841a535d59942efd59d076beaa50d6f68606bcaf3d16c",
                                "typeString": "literal_string \"List id not used\""
                              }
                            ],
                            "id": 6679,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967278,
                              4294967278
                            ],
                            "referencedDeclaration": 4294967278,
                            "src": "7071:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6693,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7071:92:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6694,
                        "nodeType": "ExpressionStatement",
                        "src": "7071:92:21"
                      },
                      {
                        "expression": {
                          "arguments": [
                            {
                              "expression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "baseExpression": {
                                      "id": 6696,
                                      "name": "indexUsed",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6040,
                                      "src": "7185:9:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_CredentialEntry_$5993_storage_$_$_$",
                                        "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct MetadataRegistry.CredentialEntry storage ref)))"
                                      }
                                    },
                                    "id": 6701,
                                    "indexExpression": {
                                      "expression": {
                                        "baseExpression": {
                                          "id": 6697,
                                          "name": "_entryIndexes",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6648,
                                          "src": "7195:13:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                                            "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                                          }
                                        },
                                        "id": 6699,
                                        "indexExpression": {
                                          "id": 6698,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6669,
                                          "src": "7209:1:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "7195:16:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_CredentialIdentifier_$6009_memory_ptr",
                                          "typeString": "struct MetadataRegistry.CredentialIdentifier memory"
                                        }
                                      },
                                      "id": 6700,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "accountId",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6004,
                                      "src": "7195:26:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7185:37:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_CredentialEntry_$5993_storage_$_$",
                                      "typeString": "mapping(uint256 => mapping(uint32 => struct MetadataRegistry.CredentialEntry storage ref))"
                                    }
                                  },
                                  "id": 6706,
                                  "indexExpression": {
                                    "expression": {
                                      "baseExpression": {
                                        "id": 6702,
                                        "name": "_entryIndexes",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6648,
                                        "src": "7223:13:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                                        }
                                      },
                                      "id": 6704,
                                      "indexExpression": {
                                        "id": 6703,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6669,
                                        "src": "7237:1:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "7223:16:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CredentialIdentifier_$6009_memory_ptr",
                                        "typeString": "struct MetadataRegistry.CredentialIdentifier memory"
                                      }
                                    },
                                    "id": 6705,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "listId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6006,
                                    "src": "7223:23:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7185:62:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_CredentialEntry_$5993_storage_$",
                                    "typeString": "mapping(uint32 => struct MetadataRegistry.CredentialEntry storage ref)"
                                  }
                                },
                                "id": 6711,
                                "indexExpression": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 6707,
                                      "name": "_entryIndexes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6648,
                                      "src": "7248:13:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                                      }
                                    },
                                    "id": 6709,
                                    "indexExpression": {
                                      "id": 6708,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6669,
                                      "src": "7262:1:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7248:16:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CredentialIdentifier_$6009_memory_ptr",
                                      "typeString": "struct MetadataRegistry.CredentialIdentifier memory"
                                    }
                                  },
                                  "id": 6710,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "index",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6008,
                                  "src": "7248:22:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7185:86:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_CredentialEntry_$5993_storage",
                                  "typeString": "struct MetadataRegistry.CredentialEntry storage ref"
                                }
                              },
                              "id": 6712,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "used",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5992,
                              "src": "7185:91:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            {
                              "hexValue": "496e646578206e6f742075736564",
                              "id": 6713,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7278:16:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_d4eeb7b9737a35467cf971936b92fcf69bb10ccb8683e841e08d9bef44aef8e0",
                                "typeString": "literal_string \"Index not used\""
                              },
                              "value": "Index not used"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              {
                                "typeIdentifier": "t_stringliteral_d4eeb7b9737a35467cf971936b92fcf69bb10ccb8683e841e08d9bef44aef8e0",
                                "typeString": "literal_string \"Index not used\""
                              }
                            ],
                            "id": 6695,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              4294967278,
                              4294967278
                            ],
                            "referencedDeclaration": 4294967278,
                            "src": "7177:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                              "typeString": "function (bool,string memory) pure"
                            }
                          },
                          "id": 6714,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7177:118:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6715,
                        "nodeType": "ExpressionStatement",
                        "src": "7177:118:21"
                      },
                      {
                        "expression": {
                          "id": 6732,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 6716,
                                "name": "entries",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6659,
                                "src": "7309:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct MetadataRegistry.CredentialMetadata memory[] memory"
                                }
                              },
                              "id": 6718,
                              "indexExpression": {
                                "id": 6717,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6669,
                                "src": "7317:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7309:10:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CredentialMetadata_$6020_memory_ptr",
                                "typeString": "struct MetadataRegistry.CredentialMetadata memory"
                              }
                            },
                            "id": 6719,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "version",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6011,
                            "src": "7309:18:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes2",
                              "typeString": "bytes2"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "baseExpression": {
                                "baseExpression": {
                                  "id": 6720,
                                  "name": "lists",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6031,
                                  "src": "7330:5:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ListMetadata_$6002_storage_$_$",
                                    "typeString": "mapping(address => mapping(uint256 => struct MetadataRegistry.ListMetadata storage ref))"
                                  }
                                },
                                "id": 6725,
                                "indexExpression": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 6721,
                                      "name": "_entryIndexes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6648,
                                      "src": "7336:13:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                                      }
                                    },
                                    "id": 6723,
                                    "indexExpression": {
                                      "id": 6722,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6669,
                                      "src": "7350:1:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7336:16:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CredentialIdentifier_$6009_memory_ptr",
                                      "typeString": "struct MetadataRegistry.CredentialIdentifier memory"
                                    }
                                  },
                                  "id": 6724,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "accountId",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6004,
                                  "src": "7336:26:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7330:33:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ListMetadata_$6002_storage_$",
                                  "typeString": "mapping(uint256 => struct MetadataRegistry.ListMetadata storage ref)"
                                }
                              },
                              "id": 6730,
                              "indexExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 6726,
                                    "name": "_entryIndexes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6648,
                                    "src": "7364:13:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                                    }
                                  },
                                  "id": 6728,
                                  "indexExpression": {
                                    "id": 6727,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6669,
                                    "src": "7378:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7364:16:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CredentialIdentifier_$6009_memory_ptr",
                                    "typeString": "struct MetadataRegistry.CredentialIdentifier memory"
                                  }
                                },
                                "id": 6729,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "listId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6006,
                                "src": "7364:23:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7330:58:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ListMetadata_$6002_storage",
                                "typeString": "struct MetadataRegistry.ListMetadata storage ref"
                              }
                            },
                            "id": 6731,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "version",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5995,
                            "src": "7330:66:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes2",
                              "typeString": "bytes2"
                            }
                          },
                          "src": "7309:87:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes2",
                            "typeString": "bytes2"
                          }
                        },
                        "id": 6733,
                        "nodeType": "ExpressionStatement",
                        "src": "7309:87:21"
                      },
                      {
                        "expression": {
                          "id": 6755,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 6734,
                                "name": "entries",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6659,
                                "src": "7410:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct MetadataRegistry.CredentialMetadata memory[] memory"
                                }
                              },
                              "id": 6736,
                              "indexExpression": {
                                "id": 6735,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6669,
                                "src": "7418:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7410:10:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CredentialMetadata_$6020_memory_ptr",
                                "typeString": "struct MetadataRegistry.CredentialMetadata memory"
                              }
                            },
                            "id": 6737,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "credentialType",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6013,
                            "src": "7410:25:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes2",
                              "typeString": "bytes2"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "baseExpression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 6738,
                                    "name": "indexUsed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6040,
                                    "src": "7438:9:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_CredentialEntry_$5993_storage_$_$_$",
                                      "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct MetadataRegistry.CredentialEntry storage ref)))"
                                    }
                                  },
                                  "id": 6743,
                                  "indexExpression": {
                                    "expression": {
                                      "baseExpression": {
                                        "id": 6739,
                                        "name": "_entryIndexes",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6648,
                                        "src": "7448:13:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                                        }
                                      },
                                      "id": 6741,
                                      "indexExpression": {
                                        "id": 6740,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6669,
                                        "src": "7462:1:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "7448:16:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CredentialIdentifier_$6009_memory_ptr",
                                        "typeString": "struct MetadataRegistry.CredentialIdentifier memory"
                                      }
                                    },
                                    "id": 6742,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accountId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6004,
                                    "src": "7448:26:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7438:37:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_CredentialEntry_$5993_storage_$_$",
                                    "typeString": "mapping(uint256 => mapping(uint32 => struct MetadataRegistry.CredentialEntry storage ref))"
                                  }
                                },
                                "id": 6748,
                                "indexExpression": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 6744,
                                      "name": "_entryIndexes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6648,
                                      "src": "7476:13:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                                      }
                                    },
                                    "id": 6746,
                                    "indexExpression": {
                                      "id": 6745,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6669,
                                      "src": "7490:1:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7476:16:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CredentialIdentifier_$6009_memory_ptr",
                                      "typeString": "struct MetadataRegistry.CredentialIdentifier memory"
                                    }
                                  },
                                  "id": 6747,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "listId",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6006,
                                  "src": "7476:23:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7438:62:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_CredentialEntry_$5993_storage_$",
                                  "typeString": "mapping(uint32 => struct MetadataRegistry.CredentialEntry storage ref)"
                                }
                              },
                              "id": 6753,
                              "indexExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 6749,
                                    "name": "_entryIndexes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6648,
                                    "src": "7501:13:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                                    }
                                  },
                                  "id": 6751,
                                  "indexExpression": {
                                    "id": 6750,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6669,
                                    "src": "7515:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7501:16:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CredentialIdentifier_$6009_memory_ptr",
                                    "typeString": "struct MetadataRegistry.CredentialIdentifier memory"
                                  }
                                },
                                "id": 6752,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "index",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6008,
                                "src": "7501:22:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7438:86:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CredentialEntry_$5993_storage",
                                "typeString": "struct MetadataRegistry.CredentialEntry storage ref"
                              }
                            },
                            "id": 6754,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "credentialType",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5988,
                            "src": "7438:101:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes2",
                              "typeString": "bytes2"
                            }
                          },
                          "src": "7410:129:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes2",
                            "typeString": "bytes2"
                          }
                        },
                        "id": 6756,
                        "nodeType": "ExpressionStatement",
                        "src": "7410:129:21"
                      },
                      {
                        "expression": {
                          "id": 6773,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 6757,
                                "name": "entries",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6659,
                                "src": "7553:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct MetadataRegistry.CredentialMetadata memory[] memory"
                                }
                              },
                              "id": 6759,
                              "indexExpression": {
                                "id": 6758,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6669,
                                "src": "7561:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7553:10:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CredentialMetadata_$6020_memory_ptr",
                                "typeString": "struct MetadataRegistry.CredentialMetadata memory"
                              }
                            },
                            "id": 6760,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "algType",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6015,
                            "src": "7553:18:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes2",
                              "typeString": "bytes2"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "baseExpression": {
                                "baseExpression": {
                                  "id": 6761,
                                  "name": "lists",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6031,
                                  "src": "7574:5:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ListMetadata_$6002_storage_$_$",
                                    "typeString": "mapping(address => mapping(uint256 => struct MetadataRegistry.ListMetadata storage ref))"
                                  }
                                },
                                "id": 6766,
                                "indexExpression": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 6762,
                                      "name": "_entryIndexes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6648,
                                      "src": "7580:13:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                                      }
                                    },
                                    "id": 6764,
                                    "indexExpression": {
                                      "id": 6763,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6669,
                                      "src": "7594:1:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7580:16:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CredentialIdentifier_$6009_memory_ptr",
                                      "typeString": "struct MetadataRegistry.CredentialIdentifier memory"
                                    }
                                  },
                                  "id": 6765,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "accountId",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6004,
                                  "src": "7580:26:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7574:33:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ListMetadata_$6002_storage_$",
                                  "typeString": "mapping(uint256 => struct MetadataRegistry.ListMetadata storage ref)"
                                }
                              },
                              "id": 6771,
                              "indexExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 6767,
                                    "name": "_entryIndexes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6648,
                                    "src": "7608:13:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                                    }
                                  },
                                  "id": 6769,
                                  "indexExpression": {
                                    "id": 6768,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6669,
                                    "src": "7622:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7608:16:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CredentialIdentifier_$6009_memory_ptr",
                                    "typeString": "struct MetadataRegistry.CredentialIdentifier memory"
                                  }
                                },
                                "id": 6770,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "listId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6006,
                                "src": "7608:23:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7574:58:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ListMetadata_$6002_storage",
                                "typeString": "struct MetadataRegistry.ListMetadata storage ref"
                              }
                            },
                            "id": 6772,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "algType",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5997,
                            "src": "7574:66:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes2",
                              "typeString": "bytes2"
                            }
                          },
                          "src": "7553:87:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes2",
                            "typeString": "bytes2"
                          }
                        },
                        "id": 6774,
                        "nodeType": "ExpressionStatement",
                        "src": "7553:87:21"
                      },
                      {
                        "expression": {
                          "id": 6796,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 6775,
                                "name": "entries",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6659,
                                "src": "7654:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct MetadataRegistry.CredentialMetadata memory[] memory"
                                }
                              },
                              "id": 6777,
                              "indexExpression": {
                                "id": 6776,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6669,
                                "src": "7662:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7654:10:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CredentialMetadata_$6020_memory_ptr",
                                "typeString": "struct MetadataRegistry.CredentialMetadata memory"
                              }
                            },
                            "id": 6778,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "encryptedPublicKey",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6017,
                            "src": "7654:29:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "baseExpression": {
                                "baseExpression": {
                                  "baseExpression": {
                                    "id": 6779,
                                    "name": "indexUsed",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6040,
                                    "src": "7686:9:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_CredentialEntry_$5993_storage_$_$_$",
                                      "typeString": "mapping(address => mapping(uint256 => mapping(uint32 => struct MetadataRegistry.CredentialEntry storage ref)))"
                                    }
                                  },
                                  "id": 6784,
                                  "indexExpression": {
                                    "expression": {
                                      "baseExpression": {
                                        "id": 6780,
                                        "name": "_entryIndexes",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6648,
                                        "src": "7696:13:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                                          "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                                        }
                                      },
                                      "id": 6782,
                                      "indexExpression": {
                                        "id": 6781,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6669,
                                        "src": "7710:1:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "7696:16:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_CredentialIdentifier_$6009_memory_ptr",
                                        "typeString": "struct MetadataRegistry.CredentialIdentifier memory"
                                      }
                                    },
                                    "id": 6783,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "accountId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6004,
                                    "src": "7696:26:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7686:37:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_uint256_$_t_mapping$_t_uint32_$_t_struct$_CredentialEntry_$5993_storage_$_$",
                                    "typeString": "mapping(uint256 => mapping(uint32 => struct MetadataRegistry.CredentialEntry storage ref))"
                                  }
                                },
                                "id": 6789,
                                "indexExpression": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 6785,
                                      "name": "_entryIndexes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6648,
                                      "src": "7724:13:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                                      }
                                    },
                                    "id": 6787,
                                    "indexExpression": {
                                      "id": 6786,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6669,
                                      "src": "7738:1:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7724:16:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CredentialIdentifier_$6009_memory_ptr",
                                      "typeString": "struct MetadataRegistry.CredentialIdentifier memory"
                                    }
                                  },
                                  "id": 6788,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "listId",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6006,
                                  "src": "7724:23:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7686:62:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_CredentialEntry_$5993_storage_$",
                                  "typeString": "mapping(uint32 => struct MetadataRegistry.CredentialEntry storage ref)"
                                }
                              },
                              "id": 6794,
                              "indexExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 6790,
                                    "name": "_entryIndexes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6648,
                                    "src": "7749:13:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                                    }
                                  },
                                  "id": 6792,
                                  "indexExpression": {
                                    "id": 6791,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6669,
                                    "src": "7763:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7749:16:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CredentialIdentifier_$6009_memory_ptr",
                                    "typeString": "struct MetadataRegistry.CredentialIdentifier memory"
                                  }
                                },
                                "id": 6793,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "index",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6008,
                                "src": "7749:22:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7686:86:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CredentialEntry_$5993_storage",
                                "typeString": "struct MetadataRegistry.CredentialEntry storage ref"
                              }
                            },
                            "id": 6795,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "encryptedPublicKey",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5990,
                            "src": "7686:105:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "src": "7654:137:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 6797,
                        "nodeType": "ExpressionStatement",
                        "src": "7654:137:21"
                      },
                      {
                        "expression": {
                          "id": 6814,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "expression": {
                              "baseExpression": {
                                "id": 6798,
                                "name": "entries",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6659,
                                "src": "7805:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                                  "typeString": "struct MetadataRegistry.CredentialMetadata memory[] memory"
                                }
                              },
                              "id": 6800,
                              "indexExpression": {
                                "id": 6799,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6669,
                                "src": "7813:1:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7805:10:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_CredentialMetadata_$6020_memory_ptr",
                                "typeString": "struct MetadataRegistry.CredentialMetadata memory"
                              }
                            },
                            "id": 6801,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "issuerVc",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6019,
                            "src": "7805:19:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "expression": {
                              "baseExpression": {
                                "baseExpression": {
                                  "id": 6802,
                                  "name": "lists",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6031,
                                  "src": "7827:5:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_uint256_$_t_struct$_ListMetadata_$6002_storage_$_$",
                                    "typeString": "mapping(address => mapping(uint256 => struct MetadataRegistry.ListMetadata storage ref))"
                                  }
                                },
                                "id": 6807,
                                "indexExpression": {
                                  "expression": {
                                    "baseExpression": {
                                      "id": 6803,
                                      "name": "_entryIndexes",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6648,
                                      "src": "7833:13:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                                        "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                                      }
                                    },
                                    "id": 6805,
                                    "indexExpression": {
                                      "id": 6804,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6669,
                                      "src": "7847:1:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "7833:16:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_CredentialIdentifier_$6009_memory_ptr",
                                      "typeString": "struct MetadataRegistry.CredentialIdentifier memory"
                                    }
                                  },
                                  "id": 6806,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "accountId",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6004,
                                  "src": "7833:26:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "7827:33:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_ListMetadata_$6002_storage_$",
                                  "typeString": "mapping(uint256 => struct MetadataRegistry.ListMetadata storage ref)"
                                }
                              },
                              "id": 6812,
                              "indexExpression": {
                                "expression": {
                                  "baseExpression": {
                                    "id": 6808,
                                    "name": "_entryIndexes",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6648,
                                    "src": "7861:13:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                                      "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                                    }
                                  },
                                  "id": 6810,
                                  "indexExpression": {
                                    "id": 6809,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6669,
                                    "src": "7875:1:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "7861:16:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_CredentialIdentifier_$6009_memory_ptr",
                                    "typeString": "struct MetadataRegistry.CredentialIdentifier memory"
                                  }
                                },
                                "id": 6811,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "listId",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6006,
                                "src": "7861:23:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "7827:58:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_ListMetadata_$6002_storage",
                                "typeString": "struct MetadataRegistry.ListMetadata storage ref"
                              }
                            },
                            "id": 6813,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "issuerVc",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5999,
                            "src": "7827:67:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage",
                              "typeString": "bytes storage ref"
                            }
                          },
                          "src": "7805:89:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "id": 6815,
                        "nodeType": "ExpressionStatement",
                        "src": "7805:89:21"
                      }
                    ]
                  },
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 6675,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 6672,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6669,
                      "src": "7026:1:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "expression": {
                        "id": 6673,
                        "name": "_entryIndexes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6648,
                        "src": "7030:13:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                        }
                      },
                      "id": 6674,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "src": "7030:20:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "7026:24:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 6817,
                  "initializationExpression": {
                    "assignments": [
                      6669
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 6669,
                        "mutability": "mutable",
                        "name": "i",
                        "nameLocation": "7019:1:21",
                        "nodeType": "VariableDeclaration",
                        "scope": 6817,
                        "src": "7011:9:21",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6668,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "7011:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "visibility": "internal"
                      }
                    ],
                    "id": 6671,
                    "initialValue": {
                      "hexValue": "30",
                      "id": 6670,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7023:1:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "7011:13:21"
                  },
                  "loopExpression": {
                    "expression": {
                      "id": 6677,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "7052:3:21",
                      "subExpression": {
                        "id": 6676,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6669,
                        "src": "7052:1:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6678,
                    "nodeType": "ExpressionStatement",
                    "src": "7052:3:21"
                  },
                  "nodeType": "ForStatement",
                  "src": "7006:899:21"
                },
                {
                  "expression": {
                    "id": 6818,
                    "name": "entries",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6659,
                    "src": "7921:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                      "typeString": "struct MetadataRegistry.CredentialMetadata memory[] memory"
                    }
                  },
                  "functionReturnParameters": 6654,
                  "id": 6819,
                  "nodeType": "Return",
                  "src": "7914:14:21"
                }
              ]
            },
            "id": 6821,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_getEntries",
            "nameLocation": "6758:11:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6649,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6648,
                  "mutability": "mutable",
                  "name": "_entryIndexes",
                  "nameLocation": "6809:13:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6821,
                  "src": "6779:43:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct MetadataRegistry.CredentialIdentifier[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6646,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 6645,
                        "name": "CredentialIdentifier",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 6009,
                        "src": "6779:20:21"
                      },
                      "referencedDeclaration": 6009,
                      "src": "6779:20:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_CredentialIdentifier_$6009_storage_ptr",
                        "typeString": "struct MetadataRegistry.CredentialIdentifier"
                      }
                    },
                    "id": 6647,
                    "nodeType": "ArrayTypeName",
                    "src": "6779:22:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_storage_$dyn_storage_ptr",
                      "typeString": "struct MetadataRegistry.CredentialIdentifier[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6769:59:21"
            },
            "returnParameters": {
              "id": 6654,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6653,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6821,
                  "src": "6851:27:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct MetadataRegistry.CredentialMetadata[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6651,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 6650,
                        "name": "CredentialMetadata",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 6020,
                        "src": "6851:18:21"
                      },
                      "referencedDeclaration": 6020,
                      "src": "6851:18:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_CredentialMetadata_$6020_storage_ptr",
                        "typeString": "struct MetadataRegistry.CredentialMetadata"
                      }
                    },
                    "id": 6652,
                    "nodeType": "ArrayTypeName",
                    "src": "6851:20:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_storage_$dyn_storage_ptr",
                      "typeString": "struct MetadataRegistry.CredentialMetadata[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "6850:29:21"
            },
            "scope": 7414,
            "src": "6749:1186:21",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 6850,
              "nodeType": "Block",
              "src": "8074:206:21",
              "statements": [
                {
                  "assignments": [
                    6836
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6836,
                      "mutability": "mutable",
                      "name": "entries",
                      "nameLocation": "8112:7:21",
                      "nodeType": "VariableDeclaration",
                      "scope": 6850,
                      "src": "8084:35:21",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct MetadataRegistry.CredentialMetadata[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6834,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6833,
                            "name": "CredentialMetadata",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6020,
                            "src": "8084:18:21"
                          },
                          "referencedDeclaration": 6020,
                          "src": "8084:18:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CredentialMetadata_$6020_storage_ptr",
                            "typeString": "struct MetadataRegistry.CredentialMetadata"
                          }
                        },
                        "id": 6835,
                        "nodeType": "ArrayTypeName",
                        "src": "8084:20:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_storage_$dyn_storage_ptr",
                          "typeString": "struct MetadataRegistry.CredentialMetadata[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6840,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 6838,
                        "name": "_entryIndexes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6825,
                        "src": "8134:13:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                        }
                      ],
                      "id": 6837,
                      "name": "_getEntries",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6821,
                      "src": "8122:11:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr_$returns$_t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr_$",
                        "typeString": "function (struct MetadataRegistry.CredentialIdentifier memory[] memory) view returns (struct MetadataRegistry.CredentialMetadata memory[] memory)"
                      }
                    },
                    "id": 6839,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8122:26:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                      "typeString": "struct MetadataRegistry.CredentialMetadata memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8084:64:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "id": 6843,
                            "name": "entries",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6836,
                            "src": "8183:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct MetadataRegistry.CredentialMetadata memory[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                              "typeString": "struct MetadataRegistry.CredentialMetadata memory[] memory"
                            }
                          ],
                          "id": 6842,
                          "name": "isFreeGetEntries",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6644,
                          "src": "8166:16:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (struct MetadataRegistry.CredentialMetadata memory[] memory) view returns (bool)"
                          }
                        },
                        "id": 6844,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8166:25:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4f6e6c792066726565206372656164656e7469616c20747970657320697320616c6c6f77656420776974686f757420636f75706f6e",
                        "id": 6845,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8193:55:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_38f9caf05bedd63059484a2336fad9725a700df02b1ed12a2feaa2e7557f5a96",
                          "typeString": "literal_string \"Only free creadential types is allowed without coupon\""
                        },
                        "value": "Only free creadential types is allowed without coupon"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_38f9caf05bedd63059484a2336fad9725a700df02b1ed12a2feaa2e7557f5a96",
                          "typeString": "literal_string \"Only free creadential types is allowed without coupon\""
                        }
                      ],
                      "id": 6841,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "8158:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6846,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8158:91:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6847,
                  "nodeType": "ExpressionStatement",
                  "src": "8158:91:21"
                },
                {
                  "expression": {
                    "id": 6848,
                    "name": "entries",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6836,
                    "src": "8266:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                      "typeString": "struct MetadataRegistry.CredentialMetadata memory[] memory"
                    }
                  },
                  "functionReturnParameters": 6831,
                  "id": 6849,
                  "nodeType": "Return",
                  "src": "8259:14:21"
                }
              ]
            },
            "functionSelector": "1aee318e",
            "id": 6851,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getFreeEntries",
            "nameLocation": "7950:14:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6826,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6825,
                  "mutability": "mutable",
                  "name": "_entryIndexes",
                  "nameLocation": "8004:13:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6851,
                  "src": "7974:43:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct MetadataRegistry.CredentialIdentifier[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6823,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 6822,
                        "name": "CredentialIdentifier",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 6009,
                        "src": "7974:20:21"
                      },
                      "referencedDeclaration": 6009,
                      "src": "7974:20:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_CredentialIdentifier_$6009_storage_ptr",
                        "typeString": "struct MetadataRegistry.CredentialIdentifier"
                      }
                    },
                    "id": 6824,
                    "nodeType": "ArrayTypeName",
                    "src": "7974:22:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_storage_$dyn_storage_ptr",
                      "typeString": "struct MetadataRegistry.CredentialIdentifier[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "7964:59:21"
            },
            "returnParameters": {
              "id": 6831,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6830,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6851,
                  "src": "8045:27:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct MetadataRegistry.CredentialMetadata[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6828,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 6827,
                        "name": "CredentialMetadata",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 6020,
                        "src": "8045:18:21"
                      },
                      "referencedDeclaration": 6020,
                      "src": "8045:18:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_CredentialMetadata_$6020_storage_ptr",
                        "typeString": "struct MetadataRegistry.CredentialMetadata"
                      }
                    },
                    "id": 6829,
                    "nodeType": "ArrayTypeName",
                    "src": "8045:20:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_storage_$dyn_storage_ptr",
                      "typeString": "struct MetadataRegistry.CredentialMetadata[]"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8044:29:21"
            },
            "scope": 7414,
            "src": "7941:339:21",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6873,
              "nodeType": "Block",
              "src": "8470:94:21",
              "statements": [
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6865,
                        "name": "_entryIndexes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6855,
                        "src": "8503:13:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                        }
                      },
                      {
                        "id": 6866,
                        "name": "traceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6857,
                        "src": "8518:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 6867,
                        "name": "caoDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6859,
                        "src": "8527:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 6868,
                        "name": "burnerDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6861,
                        "src": "8535:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "expression": {
                          "id": 6869,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4294967281,
                          "src": "8546:3:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 6870,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "src": "8546:10:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6864,
                      "name": "getPaidEntriesInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6964,
                      "src": "8480:22:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (struct MetadataRegistry.CredentialIdentifier memory[] memory,string memory,string memory,string memory,address)"
                      }
                    },
                    "id": 6871,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8480:77:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6872,
                  "nodeType": "ExpressionStatement",
                  "src": "8480:77:21"
                }
              ]
            },
            "functionSelector": "54c4992a",
            "id": 6874,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPaidEntries",
            "nameLocation": "8295:14:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6862,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6855,
                  "mutability": "mutable",
                  "name": "_entryIndexes",
                  "nameLocation": "8349:13:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6874,
                  "src": "8319:43:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct MetadataRegistry.CredentialIdentifier[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6853,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 6852,
                        "name": "CredentialIdentifier",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 6009,
                        "src": "8319:20:21"
                      },
                      "referencedDeclaration": 6009,
                      "src": "8319:20:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_CredentialIdentifier_$6009_storage_ptr",
                        "typeString": "struct MetadataRegistry.CredentialIdentifier"
                      }
                    },
                    "id": 6854,
                    "nodeType": "ArrayTypeName",
                    "src": "8319:22:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_storage_$dyn_storage_ptr",
                      "typeString": "struct MetadataRegistry.CredentialIdentifier[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6857,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "8386:7:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6874,
                  "src": "8372:21:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6856,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8372:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6859,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "8417:6:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6874,
                  "src": "8403:20:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6858,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8403:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6861,
                  "mutability": "mutable",
                  "name": "burnerDid",
                  "nameLocation": "8447:9:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6874,
                  "src": "8433:23:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6860,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8433:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8309:153:21"
            },
            "returnParameters": {
              "id": 6863,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8470:0:21"
            },
            "scope": 7414,
            "src": "8286:278:21",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6909,
              "nodeType": "Block",
              "src": "8792:191:21",
              "statements": [
                {
                  "assignments": [
                    6890
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6890,
                      "mutability": "mutable",
                      "name": "operator",
                      "nameLocation": "8810:8:21",
                      "nodeType": "VariableDeclaration",
                      "scope": 6909,
                      "src": "8802:16:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6889,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8802:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6900,
                  "initialValue": {
                    "arguments": [
                      {
                        "arguments": [
                          {
                            "expression": {
                              "id": 6895,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4294967281,
                              "src": "8868:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 6896,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "src": "8868:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "id": 6893,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967295,
                            "src": "8857:3:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 6894,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encode",
                          "nodeType": "MemberAccess",
                          "src": "8857:10:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 6897,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8857:22:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "id": 6898,
                        "name": "signature",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6886,
                        "src": "8881:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "id": 6891,
                        "name": "SignatureVerification",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5427,
                        "src": "8821:21:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SignatureVerification_$5427_$",
                          "typeString": "type(library SignatureVerification)"
                        }
                      },
                      "id": 6892,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "recoverSigner",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5426,
                      "src": "8821:35:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (bytes memory,bytes memory) pure returns (address)"
                      }
                    },
                    "id": 6899,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8821:70:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8802:89:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6902,
                        "name": "_entryIndexes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6878,
                        "src": "8924:13:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                        }
                      },
                      {
                        "id": 6903,
                        "name": "traceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6880,
                        "src": "8939:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 6904,
                        "name": "caoDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6882,
                        "src": "8948:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 6905,
                        "name": "burnerDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6884,
                        "src": "8956:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 6906,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6890,
                        "src": "8967:8:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6901,
                      "name": "getPaidEntriesInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6964,
                      "src": "8901:22:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (struct MetadataRegistry.CredentialIdentifier memory[] memory,string memory,string memory,string memory,address)"
                      }
                    },
                    "id": 6907,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8901:75:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6908,
                  "nodeType": "ExpressionStatement",
                  "src": "8901:75:21"
                }
              ]
            },
            "functionSelector": "53866d4f",
            "id": 6910,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPaidEntriesSigned",
            "nameLocation": "8579:20:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6887,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6878,
                  "mutability": "mutable",
                  "name": "_entryIndexes",
                  "nameLocation": "8639:13:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6910,
                  "src": "8609:43:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct MetadataRegistry.CredentialIdentifier[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6876,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 6875,
                        "name": "CredentialIdentifier",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 6009,
                        "src": "8609:20:21"
                      },
                      "referencedDeclaration": 6009,
                      "src": "8609:20:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_CredentialIdentifier_$6009_storage_ptr",
                        "typeString": "struct MetadataRegistry.CredentialIdentifier"
                      }
                    },
                    "id": 6877,
                    "nodeType": "ArrayTypeName",
                    "src": "8609:22:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_storage_$dyn_storage_ptr",
                      "typeString": "struct MetadataRegistry.CredentialIdentifier[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6880,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "8676:7:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6910,
                  "src": "8662:21:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6879,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8662:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6882,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "8707:6:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6910,
                  "src": "8693:20:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6881,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8693:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6884,
                  "mutability": "mutable",
                  "name": "burnerDid",
                  "nameLocation": "8737:9:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6910,
                  "src": "8723:23:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6883,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "8723:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6886,
                  "mutability": "mutable",
                  "name": "signature",
                  "nameLocation": "8769:9:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6910,
                  "src": "8756:22:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6885,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "8756:5:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "8599:185:21"
            },
            "returnParameters": {
              "id": 6888,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8792:0:21"
            },
            "scope": 7414,
            "src": "8570:413:21",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6963,
              "nodeType": "Block",
              "src": "9208:323:21",
              "statements": [
                {
                  "assignments": [
                    6929
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6929,
                      "mutability": "mutable",
                      "name": "entries",
                      "nameLocation": "9246:7:21",
                      "nodeType": "VariableDeclaration",
                      "scope": 6963,
                      "src": "9218:35:21",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                        "typeString": "struct MetadataRegistry.CredentialMetadata[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6927,
                          "nodeType": "UserDefinedTypeName",
                          "pathNode": {
                            "id": 6926,
                            "name": "CredentialMetadata",
                            "nodeType": "IdentifierPath",
                            "referencedDeclaration": 6020,
                            "src": "9218:18:21"
                          },
                          "referencedDeclaration": 6020,
                          "src": "9218:18:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_CredentialMetadata_$6020_storage_ptr",
                            "typeString": "struct MetadataRegistry.CredentialMetadata"
                          }
                        },
                        "id": 6928,
                        "nodeType": "ArrayTypeName",
                        "src": "9218:20:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_storage_$dyn_storage_ptr",
                          "typeString": "struct MetadataRegistry.CredentialMetadata[]"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6933,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 6931,
                        "name": "_entryIndexes",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6914,
                        "src": "9268:13:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct MetadataRegistry.CredentialIdentifier memory[] memory"
                        }
                      ],
                      "id": 6930,
                      "name": "_getEntries",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6821,
                      "src": "9256:11:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr_$returns$_t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr_$",
                        "typeString": "function (struct MetadataRegistry.CredentialIdentifier memory[] memory) view returns (struct MetadataRegistry.CredentialMetadata memory[] memory)"
                      }
                    },
                    "id": 6932,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9256:26:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                      "typeString": "struct MetadataRegistry.CredentialMetadata memory[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9218:64:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6938,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "9300:26:21",
                        "subExpression": {
                          "arguments": [
                            {
                              "id": 6936,
                              "name": "entries",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6929,
                              "src": "9318:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct MetadataRegistry.CredentialMetadata memory[] memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                                "typeString": "struct MetadataRegistry.CredentialMetadata memory[] memory"
                              }
                            ],
                            "id": 6935,
                            "name": "isFreeGetEntries",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6644,
                            "src": "9301:16:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr_$returns$_t_bool_$",
                              "typeString": "function (struct MetadataRegistry.CredentialMetadata memory[] memory) view returns (bool)"
                            }
                          },
                          "id": 6937,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9301:25:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "hexValue": "4e6f2070616964206372656164656e7469616c207479706573",
                        "id": 6939,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9328:27:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_83c0982fcda1b18a6920fc2c8458652fed1771abb009fc4d894e970aefcd7bfd",
                          "typeString": "literal_string \"No paid creadential types\""
                        },
                        "value": "No paid creadential types"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_83c0982fcda1b18a6920fc2c8458652fed1771abb009fc4d894e970aefcd7bfd",
                          "typeString": "literal_string \"No paid creadential types\""
                        }
                      ],
                      "id": 6934,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        4294967278,
                        4294967278
                      ],
                      "referencedDeclaration": 4294967278,
                      "src": "9292:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6940,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9292:64:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6941,
                  "nodeType": "ExpressionStatement",
                  "src": "9292:64:21"
                },
                {
                  "assignments": [
                    6943
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6943,
                      "mutability": "mutable",
                      "name": "_coupon",
                      "nameLocation": "9374:7:21",
                      "nodeType": "VariableDeclaration",
                      "scope": 6963,
                      "src": "9366:15:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6942,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9366:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6948,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 6946,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6922,
                        "src": "9402:8:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 6944,
                        "name": "Coupon",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5986,
                        "src": "9384:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VerificationCoupon_$5974",
                          "typeString": "contract VerificationCoupon"
                        }
                      },
                      "id": 6945,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getTokenId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5668,
                      "src": "9384:17:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 6947,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9384:27:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9366:45:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "id": 6952,
                        "name": "_coupon",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6943,
                        "src": "9433:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "id": 6953,
                        "name": "traceId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6916,
                        "src": "9442:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 6954,
                        "name": "caoDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6918,
                        "src": "9451:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 6955,
                        "name": "burnerDid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6920,
                        "src": "9459:9:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "id": 6956,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6922,
                        "src": "9470:8:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "id": 6949,
                        "name": "Coupon",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5986,
                        "src": "9421:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VerificationCoupon_$5974",
                          "typeString": "contract VerificationCoupon"
                        }
                      },
                      "id": 6951,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "burn",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5881,
                      "src": "9421:11:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_string_memory_ptr_$_t_address_$returns$__$",
                        "typeString": "function (uint256,string memory,string memory,string memory,address) external"
                      }
                    },
                    "id": 6957,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9421:58:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6958,
                  "nodeType": "ExpressionStatement",
                  "src": "9421:58:21"
                },
                {
                  "eventCall": {
                    "arguments": [
                      {
                        "id": 6960,
                        "name": "entries",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6929,
                        "src": "9516:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct MetadataRegistry.CredentialMetadata memory[] memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr",
                          "typeString": "struct MetadataRegistry.CredentialMetadata memory[] memory"
                        }
                      ],
                      "id": 6959,
                      "name": "GotCredentialMetadata",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6077,
                      "src": "9494:21:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_struct$_CredentialMetadata_$6020_memory_ptr_$dyn_memory_ptr_$returns$__$",
                        "typeString": "function (struct MetadataRegistry.CredentialMetadata memory[] memory)"
                      }
                    },
                    "id": 6961,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9494:30:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6962,
                  "nodeType": "EmitStatement",
                  "src": "9489:35:21"
                }
              ]
            },
            "id": 6964,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPaidEntriesInternal",
            "nameLocation": "8998:22:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6923,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6914,
                  "mutability": "mutable",
                  "name": "_entryIndexes",
                  "nameLocation": "9060:13:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6964,
                  "src": "9030:43:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_memory_ptr_$dyn_memory_ptr",
                    "typeString": "struct MetadataRegistry.CredentialIdentifier[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6912,
                      "nodeType": "UserDefinedTypeName",
                      "pathNode": {
                        "id": 6911,
                        "name": "CredentialIdentifier",
                        "nodeType": "IdentifierPath",
                        "referencedDeclaration": 6009,
                        "src": "9030:20:21"
                      },
                      "referencedDeclaration": 6009,
                      "src": "9030:20:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_CredentialIdentifier_$6009_storage_ptr",
                        "typeString": "struct MetadataRegistry.CredentialIdentifier"
                      }
                    },
                    "id": 6913,
                    "nodeType": "ArrayTypeName",
                    "src": "9030:22:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_struct$_CredentialIdentifier_$6009_storage_$dyn_storage_ptr",
                      "typeString": "struct MetadataRegistry.CredentialIdentifier[]"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6916,
                  "mutability": "mutable",
                  "name": "traceId",
                  "nameLocation": "9097:7:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6964,
                  "src": "9083:21:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6915,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9083:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6918,
                  "mutability": "mutable",
                  "name": "caoDid",
                  "nameLocation": "9128:6:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6964,
                  "src": "9114:20:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6917,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9114:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6920,
                  "mutability": "mutable",
                  "name": "burnerDid",
                  "nameLocation": "9158:9:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6964,
                  "src": "9144:23:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 6919,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "9144:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6922,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "9185:8:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 6964,
                  "src": "9177:16:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6921,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9177:7:21",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9020:179:21"
            },
            "returnParameters": {
              "id": 6924,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9208:0:21"
            },
            "scope": 7414,
            "src": "8989:542:21",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 7017,
              "nodeType": "Block",
              "src": "9649:486:21",
              "statements": [
                {
                  "assignments": [
                    6974
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6974,
                      "mutability": "mutable",
                      "name": "permission",
                      "nameLocation": "9673:10:21",
                      "nodeType": "VariableDeclaration",
                      "scope": 7017,
                      "src": "9659:24:21",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 6973,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "9659:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 6978,
                  "initialValue": {
                    "arguments": [
                      {
                        "id": 6976,
                        "name": "credentialType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6968,
                        "src": "9720:14:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        }
                      ],
                      "id": 6975,
                      "name": "getPermissionOfCredentialTypeHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7352,
                      "src": "9686:33:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_bytes2_$returns$_t_string_memory_ptr_$",
                        "typeString": "function (bytes2) pure returns (string memory)"
                      }
                    },
                    "id": 6977,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9686:49:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9659:76:21"
                },
                {
                  "clauses": [
                    {
                      "block": {
                        "id": 6989,
                        "nodeType": "Block",
                        "src": "9833:39:21",
                        "statements": [
                          {
                            "expression": {
                              "id": 6987,
                              "name": "primary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6985,
                              "src": "9854:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "functionReturnParameters": 6972,
                            "id": 6988,
                            "nodeType": "Return",
                            "src": "9847:14:21"
                          }
                        ]
                      },
                      "errorName": "",
                      "id": 6990,
                      "nodeType": "TryCatchClause",
                      "parameters": {
                        "id": 6986,
                        "nodeType": "ParameterList",
                        "parameters": [
                          {
                            "constant": false,
                            "id": 6985,
                            "mutability": "mutable",
                            "name": "primary",
                            "nameLocation": "9824:7:21",
                            "nodeType": "VariableDeclaration",
                            "scope": 6990,
                            "src": "9816:15:21",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 6984,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "9816:7:21",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "src": "9815:17:21"
                      },
                      "src": "9807:65:21"
                    },
                    {
                      "block": {
                        "id": 7009,
                        "nodeType": "Block",
                        "src": "9907:195:21",
                        "statements": [
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "arguments": [
                                    {
                                      "id": 6996,
                                      "name": "reason",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6992,
                                      "src": "9937:6:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    },
                                    {
                                      "hexValue": "5065726d697373696f6e733a207072696d617279206f66206f70657261746f72206c61636b7320726571756573746564207065726d697373696f6e",
                                      "id": 6997,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "9945:61:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_d0b8e3b2511f65fa5861542db7c5004f53c28c4f8e0959b342e0a3b9e762e41c",
                                        "typeString": "literal_string \"Permissions: primary of operator lacks requested permission\""
                                      },
                                      "value": "Permissions: primary of operator lacks requested permission"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      },
                                      {
                                        "typeIdentifier": "t_stringliteral_d0b8e3b2511f65fa5861542db7c5004f53c28c4f8e0959b342e0a3b9e762e41c",
                                        "typeString": "literal_string \"Permissions: primary of operator lacks requested permission\""
                                      }
                                    ],
                                    "id": 6995,
                                    "name": "isEqual",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7413,
                                    "src": "9929:7:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bool_$",
                                      "typeString": "function (string memory,string memory) pure returns (bool)"
                                    }
                                  },
                                  "id": 6998,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "9929:78:21",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "id": 6999,
                                  "name": "reason",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6992,
                                  "src": "10009:6:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 6994,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  4294967278,
                                  4294967278
                                ],
                                "referencedDeclaration": 4294967278,
                                "src": "9921:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 7000,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9921:95:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 7001,
                            "nodeType": "ExpressionStatement",
                            "src": "9921:95:21"
                          },
                          {
                            "expression": {
                              "arguments": [
                                {
                                  "hexValue": "66616c7365",
                                  "id": 7003,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "bool",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "10038:5:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "value": "false"
                                },
                                {
                                  "arguments": [
                                    {
                                      "id": 7005,
                                      "name": "permission",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6974,
                                      "src": "10079:10:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    ],
                                    "id": 7004,
                                    "name": "buildCheckOperatorPermissionError",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7386,
                                    "src": "10045:33:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$returns$_t_string_memory_ptr_$",
                                      "typeString": "function (string memory) pure returns (string memory)"
                                    }
                                  },
                                  "id": 7006,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10045:45:21",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "id": 7002,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  4294967278,
                                  4294967278
                                ],
                                "referencedDeclaration": 4294967278,
                                "src": "10030:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 7007,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10030:61:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 7008,
                            "nodeType": "ExpressionStatement",
                            "src": "10030:61:21"
                          }
                        ]
                      },
                      "errorName": "Error",
                      "id": 7010,
                      "nodeType": "TryCatchClause",
                      "parameters": {
                        "id": 6993,
                        "nodeType": "ParameterList",
                        "parameters": [
                          {
                            "constant": false,
                            "id": 6992,
                            "mutability": "mutable",
                            "name": "reason",
                            "nameLocation": "9899:6:21",
                            "nodeType": "VariableDeclaration",
                            "scope": 7010,
                            "src": "9885:20:21",
                            "stateVariable": false,
                            "storageLocation": "memory",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string"
                            },
                            "typeName": {
                              "id": 6991,
                              "name": "string",
                              "nodeType": "ElementaryTypeName",
                              "src": "9885:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_storage_ptr",
                                "typeString": "string"
                              }
                            },
                            "visibility": "internal"
                          }
                        ],
                        "src": "9884:22:21"
                      },
                      "src": "9873:229:21"
                    }
                  ],
                  "externalCall": {
                    "arguments": [
                      {
                        "id": 6981,
                        "name": "operator",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6966,
                        "src": "9785:8:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "id": 6982,
                        "name": "permission",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6974,
                        "src": "9795:10:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      ],
                      "expression": {
                        "id": 6979,
                        "name": "permissions",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6043,
                        "src": "9749:11:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_Permissions_$5358",
                          "typeString": "contract Permissions"
                        }
                      },
                      "id": 6980,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "checkOperatorPermission",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 5330,
                      "src": "9749:35:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_string_memory_ptr_$returns$_t_address_$",
                        "typeString": "function (address,string memory) view external returns (address)"
                      }
                    },
                    "id": 6983,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9749:57:21",
                    "tryCall": true,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 7011,
                  "nodeType": "TryStatement",
                  "src": "9745:357:21"
                },
                {
                  "expression": {
                    "arguments": [
                      {
                        "hexValue": "30",
                        "id": 7014,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10126:1:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        }
                      ],
                      "id": 7013,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "10118:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_address_$",
                        "typeString": "type(address)"
                      },
                      "typeName": {
                        "id": 7012,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10118:7:21",
                        "typeDescriptions": {}
                      }
                    },
                    "id": 7015,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10118:10:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 6972,
                  "id": 7016,
                  "nodeType": "Return",
                  "src": "10111:17:21"
                }
              ]
            },
            "functionSelector": "d3050f6e",
            "id": 7018,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "checkOperatorWithCredentialType",
            "nameLocation": "9546:31:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6969,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6966,
                  "mutability": "mutable",
                  "name": "operator",
                  "nameLocation": "9586:8:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 7018,
                  "src": "9578:16:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6965,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9578:7:21",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6968,
                  "mutability": "mutable",
                  "name": "credentialType",
                  "nameLocation": "9603:14:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 7018,
                  "src": "9596:21:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  },
                  "typeName": {
                    "id": 6967,
                    "name": "bytes2",
                    "nodeType": "ElementaryTypeName",
                    "src": "9596:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes2",
                      "typeString": "bytes2"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9577:41:21"
            },
            "returnParameters": {
              "id": 6972,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6971,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7018,
                  "src": "9640:7:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6970,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9640:7:21",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "9639:9:21"
            },
            "scope": 7414,
            "src": "9537:598:21",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7351,
              "nodeType": "Block",
              "src": "10244:5163:21",
              "statements": [
                {
                  "assignments": [
                    7026
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7026,
                      "mutability": "mutable",
                      "name": "permissionCredentialIssue",
                      "nameLocation": "10268:25:21",
                      "nodeType": "VariableDeclaration",
                      "scope": 7351,
                      "src": "10254:39:21",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 7025,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "10254:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 7028,
                  "initialValue": {
                    "hexValue": "63726564656e7469616c3a6973737565",
                    "id": 7027,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "10296:18:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_92501a8193698a203fd4c821c07967fcb6ac282aecf7d27b6d77f5523ea52b11",
                      "typeString": "literal_string \"credential:issue\""
                    },
                    "value": "credential:issue"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10254:60:21"
                },
                {
                  "assignments": [
                    7030
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7030,
                      "mutability": "mutable",
                      "name": "permissionCredentialIdentityIssue",
                      "nameLocation": "10338:33:21",
                      "nodeType": "VariableDeclaration",
                      "scope": 7351,
                      "src": "10324:47:21",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 7029,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "10324:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 7032,
                  "initialValue": {
                    "hexValue": "63726564656e7469616c3a6964656e746974796973737565",
                    "id": 7031,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "10374:26:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_bd5b718d109609cd0e1bc5a1ebd9b8e3f745523317c19c3d615d0ac4faf79929",
                      "typeString": "literal_string \"credential:identityissue\""
                    },
                    "value": "credential:identityissue"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10324:76:21"
                },
                {
                  "assignments": [
                    7034
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7034,
                      "mutability": "mutable",
                      "name": "permissionCredentialContactIssue",
                      "nameLocation": "10424:32:21",
                      "nodeType": "VariableDeclaration",
                      "scope": 7351,
                      "src": "10410:46:21",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 7033,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "10410:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 7036,
                  "initialValue": {
                    "hexValue": "63726564656e7469616c3a636f6e746163746973737565",
                    "id": 7035,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "10459:25:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_2cda59a8aca75a60b5d3541eef838fc5b2071cb6020442cfef1f46586531dcac",
                      "typeString": "literal_string \"credential:contactissue\""
                    },
                    "value": "credential:contactissue"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10410:74:21"
                },
                {
                  "assignments": [
                    7038
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7038,
                      "mutability": "mutable",
                      "name": "fallbackPermission",
                      "nameLocation": "10508:18:21",
                      "nodeType": "VariableDeclaration",
                      "scope": 7351,
                      "src": "10494:32:21",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 7037,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "10494:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "visibility": "internal"
                    }
                  ],
                  "id": 7040,
                  "initialValue": {
                    "id": 7039,
                    "name": "permissionCredentialIssue",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7026,
                    "src": "10529:25:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10494:60:21"
                },
                {
                  "condition": {
                    "commonType": {
                      "typeIdentifier": "t_bytes2",
                      "typeString": "bytes2"
                    },
                    "id": 7043,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "id": 7041,
                      "name": "credentialType",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7020,
                      "src": "10568:14:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes2",
                        "typeString": "bytes2"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "hexValue": "307837383038",
                      "id": 7042,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "10586:6:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_30728_by_1",
                        "typeString": "int_const 30728"
                      },
                      "value": "0x7808"
                    },
                    "src": "10568:24:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "commonType": {
                        "typeIdentifier": "t_bytes2",
                        "typeString": "bytes2"
                      },
                      "id": 7049,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "id": 7047,
                        "name": "credentialType",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7020,
                        "src": "10669:14:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "hexValue": "307834316563",
                        "id": 7048,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10687:6:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_16876_by_1",
                          "typeString": "int_const 16876"
                        },
                        "value": "0x41ec"
                      },
                      "src": "10669:24:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "commonType": {
                          "typeIdentifier": "t_bytes2",
                          "typeString": "bytes2"
                        },
                        "id": 7055,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "id": 7053,
                          "name": "credentialType",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7020,
                          "src": "10774:14:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes2",
                            "typeString": "bytes2"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "hexValue": "307861663239",
                          "id": 7054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10792:6:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_44841_by_1",
                            "typeString": "int_const 44841"
                          },
                          "value": "0xaf29"
                        },
                        "src": "10774:24:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "commonType": {
                            "typeIdentifier": "t_bytes2",
                            "typeString": "bytes2"
                          },
                          "id": 7061,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "id": 7059,
                            "name": "credentialType",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7020,
                            "src": "10879:14:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes2",
                              "typeString": "bytes2"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "hexValue": "307830303234",
                            "id": 7060,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10897:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_36_by_1",
                              "typeString": "int_const 36"
                            },
                            "value": "0x0024"
                          },
                          "src": "10879:24:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "condition": {
                            "commonType": {
                              "typeIdentifier": "t_bytes2",
                              "typeString": "bytes2"
                            },
                            "id": 7067,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "id": 7065,
                              "name": "credentialType",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7020,
                              "src": "10975:14:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes2",
                                "typeString": "bytes2"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "hexValue": "307863313834",
                              "id": 7066,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10993:6:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_49540_by_1",
                                "typeString": "int_const 49540"
                              },
                              "value": "0xc184"
                            },
                            "src": "10975:24:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": {
                            "condition": {
                              "commonType": {
                                "typeIdentifier": "t_bytes2",
                                "typeString": "bytes2"
                              },
                              "id": 7073,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "id": 7071,
                                "name": "credentialType",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7020,
                                "src": "11075:14:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes2",
                                  "typeString": "bytes2"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "hexValue": "307838363834",
                                "id": 7072,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11093:6:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_34436_by_1",
                                  "typeString": "int_const 34436"
                                },
                                "value": "0x8684"
                              },
                              "src": "11075:24:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "condition": {
                                "commonType": {
                                  "typeIdentifier": "t_bytes2",
                                  "typeString": "bytes2"
                                },
                                "id": 7079,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "id": 7077,
                                  "name": "credentialType",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7020,
                                  "src": "11179:14:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes2",
                                    "typeString": "bytes2"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "==",
                                "rightExpression": {
                                  "hexValue": "307835646630",
                                  "id": 7078,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11197:6:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_24048_by_1",
                                    "typeString": "int_const 24048"
                                  },
                                  "value": "0x5df0"
                                },
                                "src": "11179:24:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": {
                                "condition": {
                                  "commonType": {
                                    "typeIdentifier": "t_bytes2",
                                    "typeString": "bytes2"
                                  },
                                  "id": 7085,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "id": 7083,
                                    "name": "credentialType",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7020,
                                    "src": "11287:14:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes2",
                                      "typeString": "bytes2"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "hexValue": "307861646539",
                                    "id": 7084,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "11305:6:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_44521_by_1",
                                      "typeString": "int_const 44521"
                                    },
                                    "value": "0xade9"
                                  },
                                  "src": "11287:24:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "falseBody": {
                                  "condition": {
                                    "commonType": {
                                      "typeIdentifier": "t_bytes2",
                                      "typeString": "bytes2"
                                    },
                                    "id": 7091,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "id": 7089,
                                      "name": "credentialType",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7020,
                                      "src": "11395:14:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes2",
                                        "typeString": "bytes2"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "hexValue": "307832303936",
                                      "id": 7090,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "11413:6:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_8342_by_1",
                                        "typeString": "int_const 8342"
                                      },
                                      "value": "0x2096"
                                    },
                                    "src": "11395:24:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": {
                                    "condition": {
                                      "commonType": {
                                        "typeIdentifier": "t_bytes2",
                                        "typeString": "bytes2"
                                      },
                                      "id": 7097,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "id": 7095,
                                        "name": "credentialType",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7020,
                                        "src": "11492:14:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes2",
                                          "typeString": "bytes2"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "==",
                                      "rightExpression": {
                                        "hexValue": "307862303337",
                                        "id": 7096,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "11510:6:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_45111_by_1",
                                          "typeString": "int_const 45111"
                                        },
                                        "value": "0xb037"
                                      },
                                      "src": "11492:24:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bool",
                                        "typeString": "bool"
                                      }
                                    },
                                    "falseBody": {
                                      "condition": {
                                        "commonType": {
                                          "typeIdentifier": "t_bytes2",
                                          "typeString": "bytes2"
                                        },
                                        "id": 7103,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "id": 7101,
                                          "name": "credentialType",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7020,
                                          "src": "11603:14:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes2",
                                            "typeString": "bytes2"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "==",
                                        "rightExpression": {
                                          "hexValue": "307863333835",
                                          "id": 7102,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "11621:6:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_50053_by_1",
                                            "typeString": "int_const 50053"
                                          },
                                          "value": "0xc385"
                                        },
                                        "src": "11603:24:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      },
                                      "falseBody": {
                                        "condition": {
                                          "commonType": {
                                            "typeIdentifier": "t_bytes2",
                                            "typeString": "bytes2"
                                          },
                                          "id": 7109,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "id": 7107,
                                            "name": "credentialType",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7020,
                                            "src": "11714:14:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bytes2",
                                              "typeString": "bytes2"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "==",
                                          "rightExpression": {
                                            "hexValue": "307835663065",
                                            "id": 7108,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "11732:6:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_24334_by_1",
                                              "typeString": "int_const 24334"
                                            },
                                            "value": "0x5f0e"
                                          },
                                          "src": "11714:24:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseBody": {
                                          "condition": {
                                            "commonType": {
                                              "typeIdentifier": "t_bytes2",
                                              "typeString": "bytes2"
                                            },
                                            "id": 7115,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "id": 7113,
                                              "name": "credentialType",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7020,
                                              "src": "11825:14:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes2",
                                                "typeString": "bytes2"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "==",
                                            "rightExpression": {
                                              "hexValue": "307834623830",
                                              "id": 7114,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "11843:6:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_19328_by_1",
                                                "typeString": "int_const 19328"
                                              },
                                              "value": "0x4b80"
                                            },
                                            "src": "11825:24:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "falseBody": {
                                            "condition": {
                                              "commonType": {
                                                "typeIdentifier": "t_bytes2",
                                                "typeString": "bytes2"
                                              },
                                              "id": 7121,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "id": 7119,
                                                "name": "credentialType",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7020,
                                                "src": "11936:14:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bytes2",
                                                  "typeString": "bytes2"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "==",
                                              "rightExpression": {
                                                "hexValue": "307866326463",
                                                "id": 7120,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "kind": "number",
                                                "lValueRequested": false,
                                                "nodeType": "Literal",
                                                "src": "11954:6:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_rational_62172_by_1",
                                                  "typeString": "int_const 62172"
                                                },
                                                "value": "0xf2dc"
                                              },
                                              "src": "11936:24:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bool",
                                                "typeString": "bool"
                                              }
                                            },
                                            "falseBody": {
                                              "condition": {
                                                "commonType": {
                                                  "typeIdentifier": "t_bytes2",
                                                  "typeString": "bytes2"
                                                },
                                                "id": 7127,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "id": 7125,
                                                  "name": "credentialType",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 7020,
                                                  "src": "12049:14:21",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bytes2",
                                                    "typeString": "bytes2"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "==",
                                                "rightExpression": {
                                                  "hexValue": "307839353562",
                                                  "id": 7126,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "12067:6:21",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_38235_by_1",
                                                    "typeString": "int_const 38235"
                                                  },
                                                  "value": "0x955b"
                                                },
                                                "src": "12049:24:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              },
                                              "falseBody": {
                                                "condition": {
                                                  "commonType": {
                                                    "typeIdentifier": "t_bytes2",
                                                    "typeString": "bytes2"
                                                  },
                                                  "id": 7133,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "leftExpression": {
                                                    "id": 7131,
                                                    "name": "credentialType",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7020,
                                                    "src": "12162:14:21",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bytes2",
                                                      "typeString": "bytes2"
                                                    }
                                                  },
                                                  "nodeType": "BinaryOperation",
                                                  "operator": "==",
                                                  "rightExpression": {
                                                    "hexValue": "307837353136",
                                                    "id": 7132,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "12180:6:21",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_29974_by_1",
                                                      "typeString": "int_const 29974"
                                                    },
                                                    "value": "0x7516"
                                                  },
                                                  "src": "12162:24:21",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_bool",
                                                    "typeString": "bool"
                                                  }
                                                },
                                                "falseBody": {
                                                  "condition": {
                                                    "commonType": {
                                                      "typeIdentifier": "t_bytes2",
                                                      "typeString": "bytes2"
                                                    },
                                                    "id": 7139,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "leftExpression": {
                                                      "id": 7137,
                                                      "name": "credentialType",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 7020,
                                                      "src": "12278:14:21",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bytes2",
                                                        "typeString": "bytes2"
                                                      }
                                                    },
                                                    "nodeType": "BinaryOperation",
                                                    "operator": "==",
                                                    "rightExpression": {
                                                      "hexValue": "307865656132",
                                                      "id": 7138,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "12296:6:21",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_61090_by_1",
                                                        "typeString": "int_const 61090"
                                                      },
                                                      "value": "0xeea2"
                                                    },
                                                    "src": "12278:24:21",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_bool",
                                                      "typeString": "bool"
                                                    }
                                                  },
                                                  "falseBody": {
                                                    "condition": {
                                                      "commonType": {
                                                        "typeIdentifier": "t_bytes2",
                                                        "typeString": "bytes2"
                                                      },
                                                      "id": 7145,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "leftExpression": {
                                                        "id": 7143,
                                                        "name": "credentialType",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7020,
                                                        "src": "12395:14:21",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bytes2",
                                                          "typeString": "bytes2"
                                                        }
                                                      },
                                                      "nodeType": "BinaryOperation",
                                                      "operator": "==",
                                                      "rightExpression": {
                                                        "hexValue": "307862383966",
                                                        "id": 7144,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": true,
                                                        "kind": "number",
                                                        "lValueRequested": false,
                                                        "nodeType": "Literal",
                                                        "src": "12413:6:21",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_rational_47263_by_1",
                                                          "typeString": "int_const 47263"
                                                        },
                                                        "value": "0xb89f"
                                                      },
                                                      "src": "12395:24:21",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_bool",
                                                        "typeString": "bool"
                                                      }
                                                    },
                                                    "falseBody": {
                                                      "condition": {
                                                        "commonType": {
                                                          "typeIdentifier": "t_bytes2",
                                                          "typeString": "bytes2"
                                                        },
                                                        "id": 7151,
                                                        "isConstant": false,
                                                        "isLValue": false,
                                                        "isPure": false,
                                                        "lValueRequested": false,
                                                        "leftExpression": {
                                                          "id": 7149,
                                                          "name": "credentialType",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 7020,
                                                          "src": "12501:14:21",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_bytes2",
                                                            "typeString": "bytes2"
                                                          }
                                                        },
                                                        "nodeType": "BinaryOperation",
                                                        "operator": "==",
                                                        "rightExpression": {
                                                          "hexValue": "307832393461",
                                                          "id": 7150,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": true,
                                                          "kind": "number",
                                                          "lValueRequested": false,
                                                          "nodeType": "Literal",
                                                          "src": "12519:6:21",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_rational_10570_by_1",
                                                            "typeString": "int_const 10570"
                                                          },
                                                          "value": "0x294a"
                                                        },
                                                        "src": "12501:24:21",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_bool",
                                                          "typeString": "bool"
                                                        }
                                                      },
                                                      "falseBody": {
                                                        "condition": {
                                                          "commonType": {
                                                            "typeIdentifier": "t_bytes2",
                                                            "typeString": "bytes2"
                                                          },
                                                          "id": 7157,
                                                          "isConstant": false,
                                                          "isLValue": false,
                                                          "isPure": false,
                                                          "lValueRequested": false,
                                                          "leftExpression": {
                                                            "id": 7155,
                                                            "name": "credentialType",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7020,
                                                            "src": "12621:14:21",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_bytes2",
                                                              "typeString": "bytes2"
                                                            }
                                                          },
                                                          "nodeType": "BinaryOperation",
                                                          "operator": "==",
                                                          "rightExpression": {
                                                            "hexValue": "307838363432",
                                                            "id": 7156,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": true,
                                                            "kind": "number",
                                                            "lValueRequested": false,
                                                            "nodeType": "Literal",
                                                            "src": "12639:6:21",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_rational_34370_by_1",
                                                              "typeString": "int_const 34370"
                                                            },
                                                            "value": "0x8642"
                                                          },
                                                          "src": "12621:24:21",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_bool",
                                                            "typeString": "bool"
                                                          }
                                                        },
                                                        "falseBody": {
                                                          "condition": {
                                                            "commonType": {
                                                              "typeIdentifier": "t_bytes2",
                                                              "typeString": "bytes2"
                                                            },
                                                            "id": 7163,
                                                            "isConstant": false,
                                                            "isLValue": false,
                                                            "isPure": false,
                                                            "lValueRequested": false,
                                                            "leftExpression": {
                                                              "id": 7161,
                                                              "name": "credentialType",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 7020,
                                                              "src": "12741:14:21",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_bytes2",
                                                                "typeString": "bytes2"
                                                              }
                                                            },
                                                            "nodeType": "BinaryOperation",
                                                            "operator": "==",
                                                            "rightExpression": {
                                                              "hexValue": "307839623966",
                                                              "id": 7162,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": true,
                                                              "kind": "number",
                                                              "lValueRequested": false,
                                                              "nodeType": "Literal",
                                                              "src": "12759:6:21",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_rational_39839_by_1",
                                                                "typeString": "int_const 39839"
                                                              },
                                                              "value": "0x9b9f"
                                                            },
                                                            "src": "12741:24:21",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_bool",
                                                              "typeString": "bool"
                                                            }
                                                          },
                                                          "falseBody": {
                                                            "condition": {
                                                              "commonType": {
                                                                "typeIdentifier": "t_bytes2",
                                                                "typeString": "bytes2"
                                                              },
                                                              "id": 7169,
                                                              "isConstant": false,
                                                              "isLValue": false,
                                                              "isPure": false,
                                                              "lValueRequested": false,
                                                              "leftExpression": {
                                                                "id": 7167,
                                                                "name": "credentialType",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7020,
                                                                "src": "12863:14:21",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_bytes2",
                                                                  "typeString": "bytes2"
                                                                }
                                                              },
                                                              "nodeType": "BinaryOperation",
                                                              "operator": "==",
                                                              "rightExpression": {
                                                                "hexValue": "307835616236",
                                                                "id": 7168,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": true,
                                                                "kind": "number",
                                                                "lValueRequested": false,
                                                                "nodeType": "Literal",
                                                                "src": "12881:6:21",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_rational_23222_by_1",
                                                                  "typeString": "int_const 23222"
                                                                },
                                                                "value": "0x5ab6"
                                                              },
                                                              "src": "12863:24:21",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_bool",
                                                                "typeString": "bool"
                                                              }
                                                            },
                                                            "falseBody": {
                                                              "condition": {
                                                                "commonType": {
                                                                  "typeIdentifier": "t_bytes2",
                                                                  "typeString": "bytes2"
                                                                },
                                                                "id": 7175,
                                                                "isConstant": false,
                                                                "isLValue": false,
                                                                "isPure": false,
                                                                "lValueRequested": false,
                                                                "leftExpression": {
                                                                  "id": 7173,
                                                                  "name": "credentialType",
                                                                  "nodeType": "Identifier",
                                                                  "overloadedDeclarations": [],
                                                                  "referencedDeclaration": 7020,
                                                                  "src": "12985:14:21",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_bytes2",
                                                                    "typeString": "bytes2"
                                                                  }
                                                                },
                                                                "nodeType": "BinaryOperation",
                                                                "operator": "==",
                                                                "rightExpression": {
                                                                  "hexValue": "307862313339",
                                                                  "id": 7174,
                                                                  "isConstant": false,
                                                                  "isLValue": false,
                                                                  "isPure": true,
                                                                  "kind": "number",
                                                                  "lValueRequested": false,
                                                                  "nodeType": "Literal",
                                                                  "src": "13003:6:21",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_rational_45369_by_1",
                                                                    "typeString": "int_const 45369"
                                                                  },
                                                                  "value": "0xb139"
                                                                },
                                                                "src": "12985:24:21",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_bool",
                                                                  "typeString": "bool"
                                                                }
                                                              },
                                                              "falseBody": {
                                                                "condition": {
                                                                  "commonType": {
                                                                    "typeIdentifier": "t_bytes2",
                                                                    "typeString": "bytes2"
                                                                  },
                                                                  "id": 7181,
                                                                  "isConstant": false,
                                                                  "isLValue": false,
                                                                  "isPure": false,
                                                                  "lValueRequested": false,
                                                                  "leftExpression": {
                                                                    "id": 7179,
                                                                    "name": "credentialType",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7020,
                                                                    "src": "13100:14:21",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_bytes2",
                                                                      "typeString": "bytes2"
                                                                    }
                                                                  },
                                                                  "nodeType": "BinaryOperation",
                                                                  "operator": "==",
                                                                  "rightExpression": {
                                                                    "hexValue": "307861323134",
                                                                    "id": 7180,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": true,
                                                                    "kind": "number",
                                                                    "lValueRequested": false,
                                                                    "nodeType": "Literal",
                                                                    "src": "13118:6:21",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_rational_41492_by_1",
                                                                      "typeString": "int_const 41492"
                                                                    },
                                                                    "value": "0xa214"
                                                                  },
                                                                  "src": "13100:24:21",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_bool",
                                                                    "typeString": "bool"
                                                                  }
                                                                },
                                                                "falseBody": {
                                                                  "condition": {
                                                                    "commonType": {
                                                                      "typeIdentifier": "t_bytes2",
                                                                      "typeString": "bytes2"
                                                                    },
                                                                    "id": 7187,
                                                                    "isConstant": false,
                                                                    "isLValue": false,
                                                                    "isPure": false,
                                                                    "lValueRequested": false,
                                                                    "leftExpression": {
                                                                      "id": 7185,
                                                                      "name": "credentialType",
                                                                      "nodeType": "Identifier",
                                                                      "overloadedDeclarations": [],
                                                                      "referencedDeclaration": 7020,
                                                                      "src": "13215:14:21",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_bytes2",
                                                                        "typeString": "bytes2"
                                                                      }
                                                                    },
                                                                    "nodeType": "BinaryOperation",
                                                                    "operator": "==",
                                                                    "rightExpression": {
                                                                      "hexValue": "307839363963",
                                                                      "id": 7186,
                                                                      "isConstant": false,
                                                                      "isLValue": false,
                                                                      "isPure": true,
                                                                      "kind": "number",
                                                                      "lValueRequested": false,
                                                                      "nodeType": "Literal",
                                                                      "src": "13233:6:21",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_rational_38556_by_1",
                                                                        "typeString": "int_const 38556"
                                                                      },
                                                                      "value": "0x969c"
                                                                    },
                                                                    "src": "13215:24:21",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_bool",
                                                                      "typeString": "bool"
                                                                    }
                                                                  },
                                                                  "falseBody": {
                                                                    "condition": {
                                                                      "commonType": {
                                                                        "typeIdentifier": "t_bytes2",
                                                                        "typeString": "bytes2"
                                                                      },
                                                                      "id": 7193,
                                                                      "isConstant": false,
                                                                      "isLValue": false,
                                                                      "isPure": false,
                                                                      "lValueRequested": false,
                                                                      "leftExpression": {
                                                                        "id": 7191,
                                                                        "name": "credentialType",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 7020,
                                                                        "src": "13318:14:21",
                                                                        "typeDescriptions": {
                                                                          "typeIdentifier": "t_bytes2",
                                                                          "typeString": "bytes2"
                                                                        }
                                                                      },
                                                                      "nodeType": "BinaryOperation",
                                                                      "operator": "==",
                                                                      "rightExpression": {
                                                                        "hexValue": "307838663037",
                                                                        "id": 7192,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": true,
                                                                        "kind": "number",
                                                                        "lValueRequested": false,
                                                                        "nodeType": "Literal",
                                                                        "src": "13336:6:21",
                                                                        "typeDescriptions": {
                                                                          "typeIdentifier": "t_rational_36615_by_1",
                                                                          "typeString": "int_const 36615"
                                                                        },
                                                                        "value": "0x8f07"
                                                                      },
                                                                      "src": "13318:24:21",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_bool",
                                                                        "typeString": "bool"
                                                                      }
                                                                    },
                                                                    "falseBody": {
                                                                      "condition": {
                                                                        "commonType": {
                                                                          "typeIdentifier": "t_bytes2",
                                                                          "typeString": "bytes2"
                                                                        },
                                                                        "id": 7199,
                                                                        "isConstant": false,
                                                                        "isLValue": false,
                                                                        "isPure": false,
                                                                        "lValueRequested": false,
                                                                        "leftExpression": {
                                                                          "id": 7197,
                                                                          "name": "credentialType",
                                                                          "nodeType": "Identifier",
                                                                          "overloadedDeclarations": [],
                                                                          "referencedDeclaration": 7020,
                                                                          "src": "13425:14:21",
                                                                          "typeDescriptions": {
                                                                            "typeIdentifier": "t_bytes2",
                                                                            "typeString": "bytes2"
                                                                          }
                                                                        },
                                                                        "nodeType": "BinaryOperation",
                                                                        "operator": "==",
                                                                        "rightExpression": {
                                                                          "hexValue": "307837363463",
                                                                          "id": 7198,
                                                                          "isConstant": false,
                                                                          "isLValue": false,
                                                                          "isPure": true,
                                                                          "kind": "number",
                                                                          "lValueRequested": false,
                                                                          "nodeType": "Literal",
                                                                          "src": "13443:6:21",
                                                                          "typeDescriptions": {
                                                                            "typeIdentifier": "t_rational_30284_by_1",
                                                                            "typeString": "int_const 30284"
                                                                          },
                                                                          "value": "0x764c"
                                                                        },
                                                                        "src": "13425:24:21",
                                                                        "typeDescriptions": {
                                                                          "typeIdentifier": "t_bool",
                                                                          "typeString": "bool"
                                                                        }
                                                                      },
                                                                      "falseBody": {
                                                                        "condition": {
                                                                          "commonType": {
                                                                            "typeIdentifier": "t_bytes2",
                                                                            "typeString": "bytes2"
                                                                          },
                                                                          "id": 7205,
                                                                          "isConstant": false,
                                                                          "isLValue": false,
                                                                          "isPure": false,
                                                                          "lValueRequested": false,
                                                                          "leftExpression": {
                                                                            "id": 7203,
                                                                            "name": "credentialType",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 7020,
                                                                            "src": "13537:14:21",
                                                                            "typeDescriptions": {
                                                                              "typeIdentifier": "t_bytes2",
                                                                              "typeString": "bytes2"
                                                                            }
                                                                          },
                                                                          "nodeType": "BinaryOperation",
                                                                          "operator": "==",
                                                                          "rightExpression": {
                                                                            "hexValue": "307864623463",
                                                                            "id": 7204,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": true,
                                                                            "kind": "number",
                                                                            "lValueRequested": false,
                                                                            "nodeType": "Literal",
                                                                            "src": "13555:6:21",
                                                                            "typeDescriptions": {
                                                                              "typeIdentifier": "t_rational_56140_by_1",
                                                                              "typeString": "int_const 56140"
                                                                            },
                                                                            "value": "0xdb4c"
                                                                          },
                                                                          "src": "13537:24:21",
                                                                          "typeDescriptions": {
                                                                            "typeIdentifier": "t_bool",
                                                                            "typeString": "bool"
                                                                          }
                                                                        },
                                                                        "falseBody": {
                                                                          "condition": {
                                                                            "commonType": {
                                                                              "typeIdentifier": "t_bytes2",
                                                                              "typeString": "bytes2"
                                                                            },
                                                                            "id": 7211,
                                                                            "isConstant": false,
                                                                            "isLValue": false,
                                                                            "isPure": false,
                                                                            "lValueRequested": false,
                                                                            "leftExpression": {
                                                                              "id": 7209,
                                                                              "name": "credentialType",
                                                                              "nodeType": "Identifier",
                                                                              "overloadedDeclarations": [],
                                                                              "referencedDeclaration": 7020,
                                                                              "src": "13649:14:21",
                                                                              "typeDescriptions": {
                                                                                "typeIdentifier": "t_bytes2",
                                                                                "typeString": "bytes2"
                                                                              }
                                                                            },
                                                                            "nodeType": "BinaryOperation",
                                                                            "operator": "==",
                                                                            "rightExpression": {
                                                                              "hexValue": "307837653135",
                                                                              "id": 7210,
                                                                              "isConstant": false,
                                                                              "isLValue": false,
                                                                              "isPure": true,
                                                                              "kind": "number",
                                                                              "lValueRequested": false,
                                                                              "nodeType": "Literal",
                                                                              "src": "13667:6:21",
                                                                              "typeDescriptions": {
                                                                                "typeIdentifier": "t_rational_32277_by_1",
                                                                                "typeString": "int_const 32277"
                                                                              },
                                                                              "value": "0x7e15"
                                                                            },
                                                                            "src": "13649:24:21",
                                                                            "typeDescriptions": {
                                                                              "typeIdentifier": "t_bool",
                                                                              "typeString": "bool"
                                                                            }
                                                                          },
                                                                          "falseBody": {
                                                                            "condition": {
                                                                              "commonType": {
                                                                                "typeIdentifier": "t_bytes2",
                                                                                "typeString": "bytes2"
                                                                              },
                                                                              "id": 7217,
                                                                              "isConstant": false,
                                                                              "isLValue": false,
                                                                              "isPure": false,
                                                                              "lValueRequested": false,
                                                                              "leftExpression": {
                                                                                "id": 7215,
                                                                                "name": "credentialType",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 7020,
                                                                                "src": "13758:14:21",
                                                                                "typeDescriptions": {
                                                                                  "typeIdentifier": "t_bytes2",
                                                                                  "typeString": "bytes2"
                                                                                }
                                                                              },
                                                                              "nodeType": "BinaryOperation",
                                                                              "operator": "==",
                                                                              "rightExpression": {
                                                                                "hexValue": "307866346161",
                                                                                "id": 7216,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": true,
                                                                                "kind": "number",
                                                                                "lValueRequested": false,
                                                                                "nodeType": "Literal",
                                                                                "src": "13776:6:21",
                                                                                "typeDescriptions": {
                                                                                  "typeIdentifier": "t_rational_62634_by_1",
                                                                                  "typeString": "int_const 62634"
                                                                                },
                                                                                "value": "0xf4aa"
                                                                              },
                                                                              "src": "13758:24:21",
                                                                              "typeDescriptions": {
                                                                                "typeIdentifier": "t_bool",
                                                                                "typeString": "bool"
                                                                              }
                                                                            },
                                                                            "falseBody": {
                                                                              "condition": {
                                                                                "commonType": {
                                                                                  "typeIdentifier": "t_bytes2",
                                                                                  "typeString": "bytes2"
                                                                                },
                                                                                "id": 7223,
                                                                                "isConstant": false,
                                                                                "isLValue": false,
                                                                                "isPure": false,
                                                                                "lValueRequested": false,
                                                                                "leftExpression": {
                                                                                  "id": 7221,
                                                                                  "name": "credentialType",
                                                                                  "nodeType": "Identifier",
                                                                                  "overloadedDeclarations": [],
                                                                                  "referencedDeclaration": 7020,
                                                                                  "src": "13867:14:21",
                                                                                  "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bytes2",
                                                                                    "typeString": "bytes2"
                                                                                  }
                                                                                },
                                                                                "nodeType": "BinaryOperation",
                                                                                "operator": "==",
                                                                                "rightExpression": {
                                                                                  "hexValue": "307838353166",
                                                                                  "id": 7222,
                                                                                  "isConstant": false,
                                                                                  "isLValue": false,
                                                                                  "isPure": true,
                                                                                  "kind": "number",
                                                                                  "lValueRequested": false,
                                                                                  "nodeType": "Literal",
                                                                                  "src": "13885:6:21",
                                                                                  "typeDescriptions": {
                                                                                    "typeIdentifier": "t_rational_34079_by_1",
                                                                                    "typeString": "int_const 34079"
                                                                                  },
                                                                                  "value": "0x851f"
                                                                                },
                                                                                "src": "13867:24:21",
                                                                                "typeDescriptions": {
                                                                                  "typeIdentifier": "t_bool",
                                                                                  "typeString": "bool"
                                                                                }
                                                                              },
                                                                              "falseBody": {
                                                                                "condition": {
                                                                                  "commonType": {
                                                                                    "typeIdentifier": "t_bytes2",
                                                                                    "typeString": "bytes2"
                                                                                  },
                                                                                  "id": 7229,
                                                                                  "isConstant": false,
                                                                                  "isLValue": false,
                                                                                  "isPure": false,
                                                                                  "lValueRequested": false,
                                                                                  "leftExpression": {
                                                                                    "id": 7227,
                                                                                    "name": "credentialType",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 7020,
                                                                                    "src": "13976:14:21",
                                                                                    "typeDescriptions": {
                                                                                      "typeIdentifier": "t_bytes2",
                                                                                      "typeString": "bytes2"
                                                                                    }
                                                                                  },
                                                                                  "nodeType": "BinaryOperation",
                                                                                  "operator": "==",
                                                                                  "rightExpression": {
                                                                                    "hexValue": "307866656162",
                                                                                    "id": 7228,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": true,
                                                                                    "kind": "number",
                                                                                    "lValueRequested": false,
                                                                                    "nodeType": "Literal",
                                                                                    "src": "13994:6:21",
                                                                                    "typeDescriptions": {
                                                                                      "typeIdentifier": "t_rational_65195_by_1",
                                                                                      "typeString": "int_const 65195"
                                                                                    },
                                                                                    "value": "0xfeab"
                                                                                  },
                                                                                  "src": "13976:24:21",
                                                                                  "typeDescriptions": {
                                                                                    "typeIdentifier": "t_bool",
                                                                                    "typeString": "bool"
                                                                                  }
                                                                                },
                                                                                "falseBody": {
                                                                                  "condition": {
                                                                                    "commonType": {
                                                                                      "typeIdentifier": "t_bytes2",
                                                                                      "typeString": "bytes2"
                                                                                    },
                                                                                    "id": 7235,
                                                                                    "isConstant": false,
                                                                                    "isLValue": false,
                                                                                    "isPure": false,
                                                                                    "lValueRequested": false,
                                                                                    "leftExpression": {
                                                                                      "id": 7233,
                                                                                      "name": "credentialType",
                                                                                      "nodeType": "Identifier",
                                                                                      "overloadedDeclarations": [],
                                                                                      "referencedDeclaration": 7020,
                                                                                      "src": "14089:14:21",
                                                                                      "typeDescriptions": {
                                                                                        "typeIdentifier": "t_bytes2",
                                                                                        "typeString": "bytes2"
                                                                                      }
                                                                                    },
                                                                                    "nodeType": "BinaryOperation",
                                                                                    "operator": "==",
                                                                                    "rightExpression": {
                                                                                      "hexValue": "307865666361",
                                                                                      "id": 7234,
                                                                                      "isConstant": false,
                                                                                      "isLValue": false,
                                                                                      "isPure": true,
                                                                                      "kind": "number",
                                                                                      "lValueRequested": false,
                                                                                      "nodeType": "Literal",
                                                                                      "src": "14107:6:21",
                                                                                      "typeDescriptions": {
                                                                                        "typeIdentifier": "t_rational_61386_by_1",
                                                                                        "typeString": "int_const 61386"
                                                                                      },
                                                                                      "value": "0xefca"
                                                                                    },
                                                                                    "src": "14089:24:21",
                                                                                    "typeDescriptions": {
                                                                                      "typeIdentifier": "t_bool",
                                                                                      "typeString": "bool"
                                                                                    }
                                                                                  },
                                                                                  "falseBody": {
                                                                                    "condition": {
                                                                                      "commonType": {
                                                                                        "typeIdentifier": "t_bytes2",
                                                                                        "typeString": "bytes2"
                                                                                      },
                                                                                      "id": 7241,
                                                                                      "isConstant": false,
                                                                                      "isLValue": false,
                                                                                      "isPure": false,
                                                                                      "lValueRequested": false,
                                                                                      "leftExpression": {
                                                                                        "id": 7239,
                                                                                        "name": "credentialType",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 7020,
                                                                                        "src": "14191:14:21",
                                                                                        "typeDescriptions": {
                                                                                          "typeIdentifier": "t_bytes2",
                                                                                          "typeString": "bytes2"
                                                                                        }
                                                                                      },
                                                                                      "nodeType": "BinaryOperation",
                                                                                      "operator": "==",
                                                                                      "rightExpression": {
                                                                                        "hexValue": "307864386165",
                                                                                        "id": 7240,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": true,
                                                                                        "kind": "number",
                                                                                        "lValueRequested": false,
                                                                                        "nodeType": "Literal",
                                                                                        "src": "14209:6:21",
                                                                                        "typeDescriptions": {
                                                                                          "typeIdentifier": "t_rational_55470_by_1",
                                                                                          "typeString": "int_const 55470"
                                                                                        },
                                                                                        "value": "0xd8ae"
                                                                                      },
                                                                                      "src": "14191:24:21",
                                                                                      "typeDescriptions": {
                                                                                        "typeIdentifier": "t_bool",
                                                                                        "typeString": "bool"
                                                                                      }
                                                                                    },
                                                                                    "falseBody": {
                                                                                      "condition": {
                                                                                        "commonType": {
                                                                                          "typeIdentifier": "t_bytes2",
                                                                                          "typeString": "bytes2"
                                                                                        },
                                                                                        "id": 7247,
                                                                                        "isConstant": false,
                                                                                        "isLValue": false,
                                                                                        "isPure": false,
                                                                                        "lValueRequested": false,
                                                                                        "leftExpression": {
                                                                                          "id": 7245,
                                                                                          "name": "credentialType",
                                                                                          "nodeType": "Identifier",
                                                                                          "overloadedDeclarations": [],
                                                                                          "referencedDeclaration": 7020,
                                                                                          "src": "14293:14:21",
                                                                                          "typeDescriptions": {
                                                                                            "typeIdentifier": "t_bytes2",
                                                                                            "typeString": "bytes2"
                                                                                          }
                                                                                        },
                                                                                        "nodeType": "BinaryOperation",
                                                                                        "operator": "==",
                                                                                        "rightExpression": {
                                                                                          "hexValue": "307864656566",
                                                                                          "id": 7246,
                                                                                          "isConstant": false,
                                                                                          "isLValue": false,
                                                                                          "isPure": true,
                                                                                          "kind": "number",
                                                                                          "lValueRequested": false,
                                                                                          "nodeType": "Literal",
                                                                                          "src": "14311:6:21",
                                                                                          "typeDescriptions": {
                                                                                            "typeIdentifier": "t_rational_57071_by_1",
                                                                                            "typeString": "int_const 57071"
                                                                                          },
                                                                                          "value": "0xdeef"
                                                                                        },
                                                                                        "src": "14293:24:21",
                                                                                        "typeDescriptions": {
                                                                                          "typeIdentifier": "t_bool",
                                                                                          "typeString": "bool"
                                                                                        }
                                                                                      },
                                                                                      "falseBody": {
                                                                                        "condition": {
                                                                                          "commonType": {
                                                                                            "typeIdentifier": "t_bytes2",
                                                                                            "typeString": "bytes2"
                                                                                          },
                                                                                          "id": 7253,
                                                                                          "isConstant": false,
                                                                                          "isLValue": false,
                                                                                          "isPure": false,
                                                                                          "lValueRequested": false,
                                                                                          "leftExpression": {
                                                                                            "id": 7251,
                                                                                            "name": "credentialType",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 7020,
                                                                                            "src": "14410:14:21",
                                                                                            "typeDescriptions": {
                                                                                              "typeIdentifier": "t_bytes2",
                                                                                              "typeString": "bytes2"
                                                                                            }
                                                                                          },
                                                                                          "nodeType": "BinaryOperation",
                                                                                          "operator": "==",
                                                                                          "rightExpression": {
                                                                                            "hexValue": "307832393336",
                                                                                            "id": 7252,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": true,
                                                                                            "kind": "number",
                                                                                            "lValueRequested": false,
                                                                                            "nodeType": "Literal",
                                                                                            "src": "14428:6:21",
                                                                                            "typeDescriptions": {
                                                                                              "typeIdentifier": "t_rational_10550_by_1",
                                                                                              "typeString": "int_const 10550"
                                                                                            },
                                                                                            "value": "0x2936"
                                                                                          },
                                                                                          "src": "14410:24:21",
                                                                                          "typeDescriptions": {
                                                                                            "typeIdentifier": "t_bool",
                                                                                            "typeString": "bool"
                                                                                          }
                                                                                        },
                                                                                        "falseBody": {
                                                                                          "condition": {
                                                                                            "commonType": {
                                                                                              "typeIdentifier": "t_bytes2",
                                                                                              "typeString": "bytes2"
                                                                                            },
                                                                                            "id": 7259,
                                                                                            "isConstant": false,
                                                                                            "isLValue": false,
                                                                                            "isPure": false,
                                                                                            "lValueRequested": false,
                                                                                            "leftExpression": {
                                                                                              "id": 7257,
                                                                                              "name": "credentialType",
                                                                                              "nodeType": "Identifier",
                                                                                              "overloadedDeclarations": [],
                                                                                              "referencedDeclaration": 7020,
                                                                                              "src": "14520:14:21",
                                                                                              "typeDescriptions": {
                                                                                                "typeIdentifier": "t_bytes2",
                                                                                                "typeString": "bytes2"
                                                                                              }
                                                                                            },
                                                                                            "nodeType": "BinaryOperation",
                                                                                            "operator": "==",
                                                                                            "rightExpression": {
                                                                                              "hexValue": "307838366266",
                                                                                              "id": 7258,
                                                                                              "isConstant": false,
                                                                                              "isLValue": false,
                                                                                              "isPure": true,
                                                                                              "kind": "number",
                                                                                              "lValueRequested": false,
                                                                                              "nodeType": "Literal",
                                                                                              "src": "14538:6:21",
                                                                                              "typeDescriptions": {
                                                                                                "typeIdentifier": "t_rational_34495_by_1",
                                                                                                "typeString": "int_const 34495"
                                                                                              },
                                                                                              "value": "0x86bf"
                                                                                            },
                                                                                            "src": "14520:24:21",
                                                                                            "typeDescriptions": {
                                                                                              "typeIdentifier": "t_bool",
                                                                                              "typeString": "bool"
                                                                                            }
                                                                                          },
                                                                                          "falseBody": {
                                                                                            "condition": {
                                                                                              "commonType": {
                                                                                                "typeIdentifier": "t_bytes2",
                                                                                                "typeString": "bytes2"
                                                                                              },
                                                                                              "id": 7265,
                                                                                              "isConstant": false,
                                                                                              "isLValue": false,
                                                                                              "isPure": false,
                                                                                              "lValueRequested": false,
                                                                                              "leftExpression": {
                                                                                                "id": 7263,
                                                                                                "name": "credentialType",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 7020,
                                                                                                "src": "14624:14:21",
                                                                                                "typeDescriptions": {
                                                                                                  "typeIdentifier": "t_bytes2",
                                                                                                  "typeString": "bytes2"
                                                                                                }
                                                                                              },
                                                                                              "nodeType": "BinaryOperation",
                                                                                              "operator": "==",
                                                                                              "rightExpression": {
                                                                                                "hexValue": "307835623065",
                                                                                                "id": 7264,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": true,
                                                                                                "kind": "number",
                                                                                                "lValueRequested": false,
                                                                                                "nodeType": "Literal",
                                                                                                "src": "14642:6:21",
                                                                                                "typeDescriptions": {
                                                                                                  "typeIdentifier": "t_rational_23310_by_1",
                                                                                                  "typeString": "int_const 23310"
                                                                                                },
                                                                                                "value": "0x5b0e"
                                                                                              },
                                                                                              "src": "14624:24:21",
                                                                                              "typeDescriptions": {
                                                                                                "typeIdentifier": "t_bool",
                                                                                                "typeString": "bool"
                                                                                              }
                                                                                            },
                                                                                            "falseBody": {
                                                                                              "condition": {
                                                                                                "commonType": {
                                                                                                  "typeIdentifier": "t_bytes2",
                                                                                                  "typeString": "bytes2"
                                                                                                },
                                                                                                "id": 7271,
                                                                                                "isConstant": false,
                                                                                                "isLValue": false,
                                                                                                "isPure": false,
                                                                                                "lValueRequested": false,
                                                                                                "leftExpression": {
                                                                                                  "id": 7269,
                                                                                                  "name": "credentialType",
                                                                                                  "nodeType": "Identifier",
                                                                                                  "overloadedDeclarations": [],
                                                                                                  "referencedDeclaration": 7020,
                                                                                                  "src": "14728:14:21",
                                                                                                  "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_bytes2",
                                                                                                    "typeString": "bytes2"
                                                                                                  }
                                                                                                },
                                                                                                "nodeType": "BinaryOperation",
                                                                                                "operator": "==",
                                                                                                "rightExpression": {
                                                                                                  "hexValue": "307837623137",
                                                                                                  "id": 7270,
                                                                                                  "isConstant": false,
                                                                                                  "isLValue": false,
                                                                                                  "isPure": true,
                                                                                                  "kind": "number",
                                                                                                  "lValueRequested": false,
                                                                                                  "nodeType": "Literal",
                                                                                                  "src": "14746:6:21",
                                                                                                  "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_rational_31511_by_1",
                                                                                                    "typeString": "int_const 31511"
                                                                                                  },
                                                                                                  "value": "0x7b17"
                                                                                                },
                                                                                                "src": "14728:24:21",
                                                                                                "typeDescriptions": {
                                                                                                  "typeIdentifier": "t_bool",
                                                                                                  "typeString": "bool"
                                                                                                }
                                                                                              },
                                                                                              "falseBody": {
                                                                                                "condition": {
                                                                                                  "commonType": {
                                                                                                    "typeIdentifier": "t_bytes2",
                                                                                                    "typeString": "bytes2"
                                                                                                  },
                                                                                                  "id": 7277,
                                                                                                  "isConstant": false,
                                                                                                  "isLValue": false,
                                                                                                  "isPure": false,
                                                                                                  "lValueRequested": false,
                                                                                                  "leftExpression": {
                                                                                                    "id": 7275,
                                                                                                    "name": "credentialType",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 7020,
                                                                                                    "src": "14839:14:21",
                                                                                                    "typeDescriptions": {
                                                                                                      "typeIdentifier": "t_bytes2",
                                                                                                      "typeString": "bytes2"
                                                                                                    }
                                                                                                  },
                                                                                                  "nodeType": "BinaryOperation",
                                                                                                  "operator": "==",
                                                                                                  "rightExpression": {
                                                                                                    "hexValue": "307832396432",
                                                                                                    "id": 7276,
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": true,
                                                                                                    "kind": "number",
                                                                                                    "lValueRequested": false,
                                                                                                    "nodeType": "Literal",
                                                                                                    "src": "14857:6:21",
                                                                                                    "typeDescriptions": {
                                                                                                      "typeIdentifier": "t_rational_10706_by_1",
                                                                                                      "typeString": "int_const 10706"
                                                                                                    },
                                                                                                    "value": "0x29d2"
                                                                                                  },
                                                                                                  "src": "14839:24:21",
                                                                                                  "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_bool",
                                                                                                    "typeString": "bool"
                                                                                                  }
                                                                                                },
                                                                                                "falseBody": {
                                                                                                  "condition": {
                                                                                                    "commonType": {
                                                                                                      "typeIdentifier": "t_bytes2",
                                                                                                      "typeString": "bytes2"
                                                                                                    },
                                                                                                    "id": 7283,
                                                                                                    "isConstant": false,
                                                                                                    "isLValue": false,
                                                                                                    "isPure": false,
                                                                                                    "lValueRequested": false,
                                                                                                    "leftExpression": {
                                                                                                      "id": 7281,
                                                                                                      "name": "credentialType",
                                                                                                      "nodeType": "Identifier",
                                                                                                      "overloadedDeclarations": [],
                                                                                                      "referencedDeclaration": 7020,
                                                                                                      "src": "14952:14:21",
                                                                                                      "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_bytes2",
                                                                                                        "typeString": "bytes2"
                                                                                                      }
                                                                                                    },
                                                                                                    "nodeType": "BinaryOperation",
                                                                                                    "operator": "==",
                                                                                                    "rightExpression": {
                                                                                                      "hexValue": "307836336463",
                                                                                                      "id": 7282,
                                                                                                      "isConstant": false,
                                                                                                      "isLValue": false,
                                                                                                      "isPure": true,
                                                                                                      "kind": "number",
                                                                                                      "lValueRequested": false,
                                                                                                      "nodeType": "Literal",
                                                                                                      "src": "14970:6:21",
                                                                                                      "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_rational_25564_by_1",
                                                                                                        "typeString": "int_const 25564"
                                                                                                      },
                                                                                                      "value": "0x63dc"
                                                                                                    },
                                                                                                    "src": "14952:24:21",
                                                                                                    "typeDescriptions": {
                                                                                                      "typeIdentifier": "t_bool",
                                                                                                      "typeString": "bool"
                                                                                                    }
                                                                                                  },
                                                                                                  "falseBody": {
                                                                                                    "condition": {
                                                                                                      "commonType": {
                                                                                                        "typeIdentifier": "t_bytes2",
                                                                                                        "typeString": "bytes2"
                                                                                                      },
                                                                                                      "id": 7289,
                                                                                                      "isConstant": false,
                                                                                                      "isLValue": false,
                                                                                                      "isPure": false,
                                                                                                      "lValueRequested": false,
                                                                                                      "leftExpression": {
                                                                                                        "id": 7287,
                                                                                                        "name": "credentialType",
                                                                                                        "nodeType": "Identifier",
                                                                                                        "overloadedDeclarations": [],
                                                                                                        "referencedDeclaration": 7020,
                                                                                                        "src": "15055:14:21",
                                                                                                        "typeDescriptions": {
                                                                                                          "typeIdentifier": "t_bytes2",
                                                                                                          "typeString": "bytes2"
                                                                                                        }
                                                                                                      },
                                                                                                      "nodeType": "BinaryOperation",
                                                                                                      "operator": "==",
                                                                                                      "rightExpression": {
                                                                                                        "hexValue": "307834666662",
                                                                                                        "id": 7288,
                                                                                                        "isConstant": false,
                                                                                                        "isLValue": false,
                                                                                                        "isPure": true,
                                                                                                        "kind": "number",
                                                                                                        "lValueRequested": false,
                                                                                                        "nodeType": "Literal",
                                                                                                        "src": "15073:6:21",
                                                                                                        "typeDescriptions": {
                                                                                                          "typeIdentifier": "t_rational_20475_by_1",
                                                                                                          "typeString": "int_const 20475"
                                                                                                        },
                                                                                                        "value": "0x4ffb"
                                                                                                      },
                                                                                                      "src": "15055:24:21",
                                                                                                      "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_bool",
                                                                                                        "typeString": "bool"
                                                                                                      }
                                                                                                    },
                                                                                                    "falseBody": {
                                                                                                      "condition": {
                                                                                                        "commonType": {
                                                                                                          "typeIdentifier": "t_bytes2",
                                                                                                          "typeString": "bytes2"
                                                                                                        },
                                                                                                        "id": 7295,
                                                                                                        "isConstant": false,
                                                                                                        "isLValue": false,
                                                                                                        "isPure": false,
                                                                                                        "lValueRequested": false,
                                                                                                        "leftExpression": {
                                                                                                          "id": 7293,
                                                                                                          "name": "credentialType",
                                                                                                          "nodeType": "Identifier",
                                                                                                          "overloadedDeclarations": [],
                                                                                                          "referencedDeclaration": 7020,
                                                                                                          "src": "15162:14:21",
                                                                                                          "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_bytes2",
                                                                                                            "typeString": "bytes2"
                                                                                                          }
                                                                                                        },
                                                                                                        "nodeType": "BinaryOperation",
                                                                                                        "operator": "==",
                                                                                                        "rightExpression": {
                                                                                                          "hexValue": "307866303532",
                                                                                                          "id": 7294,
                                                                                                          "isConstant": false,
                                                                                                          "isLValue": false,
                                                                                                          "isPure": true,
                                                                                                          "kind": "number",
                                                                                                          "lValueRequested": false,
                                                                                                          "nodeType": "Literal",
                                                                                                          "src": "15180:6:21",
                                                                                                          "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_rational_61522_by_1",
                                                                                                            "typeString": "int_const 61522"
                                                                                                          },
                                                                                                          "value": "0xf052"
                                                                                                        },
                                                                                                        "src": "15162:24:21",
                                                                                                        "typeDescriptions": {
                                                                                                          "typeIdentifier": "t_bool",
                                                                                                          "typeString": "bool"
                                                                                                        }
                                                                                                      },
                                                                                                      "falseBody": {
                                                                                                        "condition": {
                                                                                                          "commonType": {
                                                                                                            "typeIdentifier": "t_bytes2",
                                                                                                            "typeString": "bytes2"
                                                                                                          },
                                                                                                          "id": 7301,
                                                                                                          "isConstant": false,
                                                                                                          "isLValue": false,
                                                                                                          "isPure": false,
                                                                                                          "lValueRequested": false,
                                                                                                          "leftExpression": {
                                                                                                            "id": 7299,
                                                                                                            "name": "credentialType",
                                                                                                            "nodeType": "Identifier",
                                                                                                            "overloadedDeclarations": [],
                                                                                                            "referencedDeclaration": 7020,
                                                                                                            "src": "15267:14:21",
                                                                                                            "typeDescriptions": {
                                                                                                              "typeIdentifier": "t_bytes2",
                                                                                                              "typeString": "bytes2"
                                                                                                            }
                                                                                                          },
                                                                                                          "nodeType": "BinaryOperation",
                                                                                                          "operator": "==",
                                                                                                          "rightExpression": {
                                                                                                            "hexValue": "307861303034",
                                                                                                            "id": 7300,
                                                                                                            "isConstant": false,
                                                                                                            "isLValue": false,
                                                                                                            "isPure": true,
                                                                                                            "kind": "number",
                                                                                                            "lValueRequested": false,
                                                                                                            "nodeType": "Literal",
                                                                                                            "src": "15285:6:21",
                                                                                                            "typeDescriptions": {
                                                                                                              "typeIdentifier": "t_rational_40964_by_1",
                                                                                                              "typeString": "int_const 40964"
                                                                                                            },
                                                                                                            "value": "0xa004"
                                                                                                          },
                                                                                                          "src": "15267:24:21",
                                                                                                          "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_bool",
                                                                                                            "typeString": "bool"
                                                                                                          }
                                                                                                        },
                                                                                                        "id": 7305,
                                                                                                        "nodeType": "IfStatement",
                                                                                                        "src": "15263:73:21",
                                                                                                        "trueBody": {
                                                                                                          "id": 7304,
                                                                                                          "nodeType": "Block",
                                                                                                          "src": "15293:43:21",
                                                                                                          "statements": [
                                                                                                            {
                                                                                                              "expression": {
                                                                                                                "id": 7302,
                                                                                                                "name": "permissionCredentialIdentityIssue",
                                                                                                                "nodeType": "Identifier",
                                                                                                                "overloadedDeclarations": [],
                                                                                                                "referencedDeclaration": 7030,
                                                                                                                "src": "15301:33:21",
                                                                                                                "typeDescriptions": {
                                                                                                                  "typeIdentifier": "t_string_memory_ptr",
                                                                                                                  "typeString": "string memory"
                                                                                                                }
                                                                                                              },
                                                                                                              "functionReturnParameters": 7024,
                                                                                                              "id": 7303,
                                                                                                              "nodeType": "Return",
                                                                                                              "src": "15294:40:21"
                                                                                                            }
                                                                                                          ]
                                                                                                        }
                                                                                                      },
                                                                                                      "id": 7306,
                                                                                                      "nodeType": "IfStatement",
                                                                                                      "src": "15158:178:21",
                                                                                                      "trueBody": {
                                                                                                        "id": 7298,
                                                                                                        "nodeType": "Block",
                                                                                                        "src": "15188:35:21",
                                                                                                        "statements": [
                                                                                                          {
                                                                                                            "expression": {
                                                                                                              "id": 7296,
                                                                                                              "name": "permissionCredentialIssue",
                                                                                                              "nodeType": "Identifier",
                                                                                                              "overloadedDeclarations": [],
                                                                                                              "referencedDeclaration": 7026,
                                                                                                              "src": "15196:25:21",
                                                                                                              "typeDescriptions": {
                                                                                                                "typeIdentifier": "t_string_memory_ptr",
                                                                                                                "typeString": "string memory"
                                                                                                              }
                                                                                                            },
                                                                                                            "functionReturnParameters": 7024,
                                                                                                            "id": 7297,
                                                                                                            "nodeType": "Return",
                                                                                                            "src": "15189:32:21"
                                                                                                          }
                                                                                                        ]
                                                                                                      }
                                                                                                    },
                                                                                                    "id": 7307,
                                                                                                    "nodeType": "IfStatement",
                                                                                                    "src": "15051:285:21",
                                                                                                    "trueBody": {
                                                                                                      "id": 7292,
                                                                                                      "nodeType": "Block",
                                                                                                      "src": "15081:42:21",
                                                                                                      "statements": [
                                                                                                        {
                                                                                                          "expression": {
                                                                                                            "id": 7290,
                                                                                                            "name": "permissionCredentialContactIssue",
                                                                                                            "nodeType": "Identifier",
                                                                                                            "overloadedDeclarations": [],
                                                                                                            "referencedDeclaration": 7034,
                                                                                                            "src": "15089:32:21",
                                                                                                            "typeDescriptions": {
                                                                                                              "typeIdentifier": "t_string_memory_ptr",
                                                                                                              "typeString": "string memory"
                                                                                                            }
                                                                                                          },
                                                                                                          "functionReturnParameters": 7024,
                                                                                                          "id": 7291,
                                                                                                          "nodeType": "Return",
                                                                                                          "src": "15082:39:21"
                                                                                                        }
                                                                                                      ]
                                                                                                    }
                                                                                                  },
                                                                                                  "id": 7308,
                                                                                                  "nodeType": "IfStatement",
                                                                                                  "src": "14948:388:21",
                                                                                                  "trueBody": {
                                                                                                    "id": 7286,
                                                                                                    "nodeType": "Block",
                                                                                                    "src": "14978:42:21",
                                                                                                    "statements": [
                                                                                                      {
                                                                                                        "expression": {
                                                                                                          "id": 7284,
                                                                                                          "name": "permissionCredentialContactIssue",
                                                                                                          "nodeType": "Identifier",
                                                                                                          "overloadedDeclarations": [],
                                                                                                          "referencedDeclaration": 7034,
                                                                                                          "src": "14986:32:21",
                                                                                                          "typeDescriptions": {
                                                                                                            "typeIdentifier": "t_string_memory_ptr",
                                                                                                            "typeString": "string memory"
                                                                                                          }
                                                                                                        },
                                                                                                        "functionReturnParameters": 7024,
                                                                                                        "id": 7285,
                                                                                                        "nodeType": "Return",
                                                                                                        "src": "14979:39:21"
                                                                                                      }
                                                                                                    ]
                                                                                                  }
                                                                                                },
                                                                                                "id": 7309,
                                                                                                "nodeType": "IfStatement",
                                                                                                "src": "14835:501:21",
                                                                                                "trueBody": {
                                                                                                  "id": 7280,
                                                                                                  "nodeType": "Block",
                                                                                                  "src": "14865:35:21",
                                                                                                  "statements": [
                                                                                                    {
                                                                                                      "expression": {
                                                                                                        "id": 7278,
                                                                                                        "name": "permissionCredentialIssue",
                                                                                                        "nodeType": "Identifier",
                                                                                                        "overloadedDeclarations": [],
                                                                                                        "referencedDeclaration": 7026,
                                                                                                        "src": "14873:25:21",
                                                                                                        "typeDescriptions": {
                                                                                                          "typeIdentifier": "t_string_memory_ptr",
                                                                                                          "typeString": "string memory"
                                                                                                        }
                                                                                                      },
                                                                                                      "functionReturnParameters": 7024,
                                                                                                      "id": 7279,
                                                                                                      "nodeType": "Return",
                                                                                                      "src": "14866:32:21"
                                                                                                    }
                                                                                                  ]
                                                                                                }
                                                                                              },
                                                                                              "id": 7310,
                                                                                              "nodeType": "IfStatement",
                                                                                              "src": "14724:612:21",
                                                                                              "trueBody": {
                                                                                                "id": 7274,
                                                                                                "nodeType": "Block",
                                                                                                "src": "14754:43:21",
                                                                                                "statements": [
                                                                                                  {
                                                                                                    "expression": {
                                                                                                      "id": 7272,
                                                                                                      "name": "permissionCredentialIdentityIssue",
                                                                                                      "nodeType": "Identifier",
                                                                                                      "overloadedDeclarations": [],
                                                                                                      "referencedDeclaration": 7030,
                                                                                                      "src": "14762:33:21",
                                                                                                      "typeDescriptions": {
                                                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                                                        "typeString": "string memory"
                                                                                                      }
                                                                                                    },
                                                                                                    "functionReturnParameters": 7024,
                                                                                                    "id": 7273,
                                                                                                    "nodeType": "Return",
                                                                                                    "src": "14755:40:21"
                                                                                                  }
                                                                                                ]
                                                                                              }
                                                                                            },
                                                                                            "id": 7311,
                                                                                            "nodeType": "IfStatement",
                                                                                            "src": "14620:716:21",
                                                                                            "trueBody": {
                                                                                              "id": 7268,
                                                                                              "nodeType": "Block",
                                                                                              "src": "14650:35:21",
                                                                                              "statements": [
                                                                                                {
                                                                                                  "expression": {
                                                                                                    "id": 7266,
                                                                                                    "name": "permissionCredentialIssue",
                                                                                                    "nodeType": "Identifier",
                                                                                                    "overloadedDeclarations": [],
                                                                                                    "referencedDeclaration": 7026,
                                                                                                    "src": "14658:25:21",
                                                                                                    "typeDescriptions": {
                                                                                                      "typeIdentifier": "t_string_memory_ptr",
                                                                                                      "typeString": "string memory"
                                                                                                    }
                                                                                                  },
                                                                                                  "functionReturnParameters": 7024,
                                                                                                  "id": 7267,
                                                                                                  "nodeType": "Return",
                                                                                                  "src": "14651:32:21"
                                                                                                }
                                                                                              ]
                                                                                            }
                                                                                          },
                                                                                          "id": 7312,
                                                                                          "nodeType": "IfStatement",
                                                                                          "src": "14516:820:21",
                                                                                          "trueBody": {
                                                                                            "id": 7262,
                                                                                            "nodeType": "Block",
                                                                                            "src": "14546:35:21",
                                                                                            "statements": [
                                                                                              {
                                                                                                "expression": {
                                                                                                  "id": 7260,
                                                                                                  "name": "permissionCredentialIssue",
                                                                                                  "nodeType": "Identifier",
                                                                                                  "overloadedDeclarations": [],
                                                                                                  "referencedDeclaration": 7026,
                                                                                                  "src": "14554:25:21",
                                                                                                  "typeDescriptions": {
                                                                                                    "typeIdentifier": "t_string_memory_ptr",
                                                                                                    "typeString": "string memory"
                                                                                                  }
                                                                                                },
                                                                                                "functionReturnParameters": 7024,
                                                                                                "id": 7261,
                                                                                                "nodeType": "Return",
                                                                                                "src": "14547:32:21"
                                                                                              }
                                                                                            ]
                                                                                          }
                                                                                        },
                                                                                        "id": 7313,
                                                                                        "nodeType": "IfStatement",
                                                                                        "src": "14406:930:21",
                                                                                        "trueBody": {
                                                                                          "id": 7256,
                                                                                          "nodeType": "Block",
                                                                                          "src": "14436:35:21",
                                                                                          "statements": [
                                                                                            {
                                                                                              "expression": {
                                                                                                "id": 7254,
                                                                                                "name": "permissionCredentialIssue",
                                                                                                "nodeType": "Identifier",
                                                                                                "overloadedDeclarations": [],
                                                                                                "referencedDeclaration": 7026,
                                                                                                "src": "14444:25:21",
                                                                                                "typeDescriptions": {
                                                                                                  "typeIdentifier": "t_string_memory_ptr",
                                                                                                  "typeString": "string memory"
                                                                                                }
                                                                                              },
                                                                                              "functionReturnParameters": 7024,
                                                                                              "id": 7255,
                                                                                              "nodeType": "Return",
                                                                                              "src": "14437:32:21"
                                                                                            }
                                                                                          ]
                                                                                        }
                                                                                      },
                                                                                      "id": 7314,
                                                                                      "nodeType": "IfStatement",
                                                                                      "src": "14289:1047:21",
                                                                                      "trueBody": {
                                                                                        "id": 7250,
                                                                                        "nodeType": "Block",
                                                                                        "src": "14319:43:21",
                                                                                        "statements": [
                                                                                          {
                                                                                            "expression": {
                                                                                              "id": 7248,
                                                                                              "name": "permissionCredentialIdentityIssue",
                                                                                              "nodeType": "Identifier",
                                                                                              "overloadedDeclarations": [],
                                                                                              "referencedDeclaration": 7030,
                                                                                              "src": "14327:33:21",
                                                                                              "typeDescriptions": {
                                                                                                "typeIdentifier": "t_string_memory_ptr",
                                                                                                "typeString": "string memory"
                                                                                              }
                                                                                            },
                                                                                            "functionReturnParameters": 7024,
                                                                                            "id": 7249,
                                                                                            "nodeType": "Return",
                                                                                            "src": "14320:40:21"
                                                                                          }
                                                                                        ]
                                                                                      }
                                                                                    },
                                                                                    "id": 7315,
                                                                                    "nodeType": "IfStatement",
                                                                                    "src": "14187:1149:21",
                                                                                    "trueBody": {
                                                                                      "id": 7244,
                                                                                      "nodeType": "Block",
                                                                                      "src": "14217:35:21",
                                                                                      "statements": [
                                                                                        {
                                                                                          "expression": {
                                                                                            "id": 7242,
                                                                                            "name": "permissionCredentialIssue",
                                                                                            "nodeType": "Identifier",
                                                                                            "overloadedDeclarations": [],
                                                                                            "referencedDeclaration": 7026,
                                                                                            "src": "14225:25:21",
                                                                                            "typeDescriptions": {
                                                                                              "typeIdentifier": "t_string_memory_ptr",
                                                                                              "typeString": "string memory"
                                                                                            }
                                                                                          },
                                                                                          "functionReturnParameters": 7024,
                                                                                          "id": 7243,
                                                                                          "nodeType": "Return",
                                                                                          "src": "14218:32:21"
                                                                                        }
                                                                                      ]
                                                                                    }
                                                                                  },
                                                                                  "id": 7316,
                                                                                  "nodeType": "IfStatement",
                                                                                  "src": "14085:1251:21",
                                                                                  "trueBody": {
                                                                                    "id": 7238,
                                                                                    "nodeType": "Block",
                                                                                    "src": "14115:35:21",
                                                                                    "statements": [
                                                                                      {
                                                                                        "expression": {
                                                                                          "id": 7236,
                                                                                          "name": "permissionCredentialIssue",
                                                                                          "nodeType": "Identifier",
                                                                                          "overloadedDeclarations": [],
                                                                                          "referencedDeclaration": 7026,
                                                                                          "src": "14123:25:21",
                                                                                          "typeDescriptions": {
                                                                                            "typeIdentifier": "t_string_memory_ptr",
                                                                                            "typeString": "string memory"
                                                                                          }
                                                                                        },
                                                                                        "functionReturnParameters": 7024,
                                                                                        "id": 7237,
                                                                                        "nodeType": "Return",
                                                                                        "src": "14116:32:21"
                                                                                      }
                                                                                    ]
                                                                                  }
                                                                                },
                                                                                "id": 7317,
                                                                                "nodeType": "IfStatement",
                                                                                "src": "13972:1364:21",
                                                                                "trueBody": {
                                                                                  "id": 7232,
                                                                                  "nodeType": "Block",
                                                                                  "src": "14002:43:21",
                                                                                  "statements": [
                                                                                    {
                                                                                      "expression": {
                                                                                        "id": 7230,
                                                                                        "name": "permissionCredentialIdentityIssue",
                                                                                        "nodeType": "Identifier",
                                                                                        "overloadedDeclarations": [],
                                                                                        "referencedDeclaration": 7030,
                                                                                        "src": "14010:33:21",
                                                                                        "typeDescriptions": {
                                                                                          "typeIdentifier": "t_string_memory_ptr",
                                                                                          "typeString": "string memory"
                                                                                        }
                                                                                      },
                                                                                      "functionReturnParameters": 7024,
                                                                                      "id": 7231,
                                                                                      "nodeType": "Return",
                                                                                      "src": "14003:40:21"
                                                                                    }
                                                                                  ]
                                                                                }
                                                                              },
                                                                              "id": 7318,
                                                                              "nodeType": "IfStatement",
                                                                              "src": "13863:1473:21",
                                                                              "trueBody": {
                                                                                "id": 7226,
                                                                                "nodeType": "Block",
                                                                                "src": "13893:43:21",
                                                                                "statements": [
                                                                                  {
                                                                                    "expression": {
                                                                                      "id": 7224,
                                                                                      "name": "permissionCredentialIdentityIssue",
                                                                                      "nodeType": "Identifier",
                                                                                      "overloadedDeclarations": [],
                                                                                      "referencedDeclaration": 7030,
                                                                                      "src": "13901:33:21",
                                                                                      "typeDescriptions": {
                                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                                        "typeString": "string memory"
                                                                                      }
                                                                                    },
                                                                                    "functionReturnParameters": 7024,
                                                                                    "id": 7225,
                                                                                    "nodeType": "Return",
                                                                                    "src": "13894:40:21"
                                                                                  }
                                                                                ]
                                                                              }
                                                                            },
                                                                            "id": 7319,
                                                                            "nodeType": "IfStatement",
                                                                            "src": "13754:1582:21",
                                                                            "trueBody": {
                                                                              "id": 7220,
                                                                              "nodeType": "Block",
                                                                              "src": "13784:35:21",
                                                                              "statements": [
                                                                                {
                                                                                  "expression": {
                                                                                    "id": 7218,
                                                                                    "name": "permissionCredentialIssue",
                                                                                    "nodeType": "Identifier",
                                                                                    "overloadedDeclarations": [],
                                                                                    "referencedDeclaration": 7026,
                                                                                    "src": "13792:25:21",
                                                                                    "typeDescriptions": {
                                                                                      "typeIdentifier": "t_string_memory_ptr",
                                                                                      "typeString": "string memory"
                                                                                    }
                                                                                  },
                                                                                  "functionReturnParameters": 7024,
                                                                                  "id": 7219,
                                                                                  "nodeType": "Return",
                                                                                  "src": "13785:32:21"
                                                                                }
                                                                              ]
                                                                            }
                                                                          },
                                                                          "id": 7320,
                                                                          "nodeType": "IfStatement",
                                                                          "src": "13645:1691:21",
                                                                          "trueBody": {
                                                                            "id": 7214,
                                                                            "nodeType": "Block",
                                                                            "src": "13675:35:21",
                                                                            "statements": [
                                                                              {
                                                                                "expression": {
                                                                                  "id": 7212,
                                                                                  "name": "permissionCredentialIssue",
                                                                                  "nodeType": "Identifier",
                                                                                  "overloadedDeclarations": [],
                                                                                  "referencedDeclaration": 7026,
                                                                                  "src": "13683:25:21",
                                                                                  "typeDescriptions": {
                                                                                    "typeIdentifier": "t_string_memory_ptr",
                                                                                    "typeString": "string memory"
                                                                                  }
                                                                                },
                                                                                "functionReturnParameters": 7024,
                                                                                "id": 7213,
                                                                                "nodeType": "Return",
                                                                                "src": "13676:32:21"
                                                                              }
                                                                            ]
                                                                          }
                                                                        },
                                                                        "id": 7321,
                                                                        "nodeType": "IfStatement",
                                                                        "src": "13533:1803:21",
                                                                        "trueBody": {
                                                                          "id": 7208,
                                                                          "nodeType": "Block",
                                                                          "src": "13563:35:21",
                                                                          "statements": [
                                                                            {
                                                                              "expression": {
                                                                                "id": 7206,
                                                                                "name": "permissionCredentialIssue",
                                                                                "nodeType": "Identifier",
                                                                                "overloadedDeclarations": [],
                                                                                "referencedDeclaration": 7026,
                                                                                "src": "13571:25:21",
                                                                                "typeDescriptions": {
                                                                                  "typeIdentifier": "t_string_memory_ptr",
                                                                                  "typeString": "string memory"
                                                                                }
                                                                              },
                                                                              "functionReturnParameters": 7024,
                                                                              "id": 7207,
                                                                              "nodeType": "Return",
                                                                              "src": "13564:32:21"
                                                                            }
                                                                          ]
                                                                        }
                                                                      },
                                                                      "id": 7322,
                                                                      "nodeType": "IfStatement",
                                                                      "src": "13421:1915:21",
                                                                      "trueBody": {
                                                                        "id": 7202,
                                                                        "nodeType": "Block",
                                                                        "src": "13451:35:21",
                                                                        "statements": [
                                                                          {
                                                                            "expression": {
                                                                              "id": 7200,
                                                                              "name": "permissionCredentialIssue",
                                                                              "nodeType": "Identifier",
                                                                              "overloadedDeclarations": [],
                                                                              "referencedDeclaration": 7026,
                                                                              "src": "13459:25:21",
                                                                              "typeDescriptions": {
                                                                                "typeIdentifier": "t_string_memory_ptr",
                                                                                "typeString": "string memory"
                                                                              }
                                                                            },
                                                                            "functionReturnParameters": 7024,
                                                                            "id": 7201,
                                                                            "nodeType": "Return",
                                                                            "src": "13452:32:21"
                                                                          }
                                                                        ]
                                                                      }
                                                                    },
                                                                    "id": 7323,
                                                                    "nodeType": "IfStatement",
                                                                    "src": "13314:2022:21",
                                                                    "trueBody": {
                                                                      "id": 7196,
                                                                      "nodeType": "Block",
                                                                      "src": "13344:42:21",
                                                                      "statements": [
                                                                        {
                                                                          "expression": {
                                                                            "id": 7194,
                                                                            "name": "permissionCredentialContactIssue",
                                                                            "nodeType": "Identifier",
                                                                            "overloadedDeclarations": [],
                                                                            "referencedDeclaration": 7034,
                                                                            "src": "13352:32:21",
                                                                            "typeDescriptions": {
                                                                              "typeIdentifier": "t_string_memory_ptr",
                                                                              "typeString": "string memory"
                                                                            }
                                                                          },
                                                                          "functionReturnParameters": 7024,
                                                                          "id": 7195,
                                                                          "nodeType": "Return",
                                                                          "src": "13345:39:21"
                                                                        }
                                                                      ]
                                                                    }
                                                                  },
                                                                  "id": 7324,
                                                                  "nodeType": "IfStatement",
                                                                  "src": "13211:2125:21",
                                                                  "trueBody": {
                                                                    "id": 7190,
                                                                    "nodeType": "Block",
                                                                    "src": "13241:42:21",
                                                                    "statements": [
                                                                      {
                                                                        "expression": {
                                                                          "id": 7188,
                                                                          "name": "permissionCredentialContactIssue",
                                                                          "nodeType": "Identifier",
                                                                          "overloadedDeclarations": [],
                                                                          "referencedDeclaration": 7034,
                                                                          "src": "13249:32:21",
                                                                          "typeDescriptions": {
                                                                            "typeIdentifier": "t_string_memory_ptr",
                                                                            "typeString": "string memory"
                                                                          }
                                                                        },
                                                                        "functionReturnParameters": 7024,
                                                                        "id": 7189,
                                                                        "nodeType": "Return",
                                                                        "src": "13242:39:21"
                                                                      }
                                                                    ]
                                                                  }
                                                                },
                                                                "id": 7325,
                                                                "nodeType": "IfStatement",
                                                                "src": "13096:2240:21",
                                                                "trueBody": {
                                                                  "id": 7184,
                                                                  "nodeType": "Block",
                                                                  "src": "13126:35:21",
                                                                  "statements": [
                                                                    {
                                                                      "expression": {
                                                                        "id": 7182,
                                                                        "name": "permissionCredentialIssue",
                                                                        "nodeType": "Identifier",
                                                                        "overloadedDeclarations": [],
                                                                        "referencedDeclaration": 7026,
                                                                        "src": "13134:25:21",
                                                                        "typeDescriptions": {
                                                                          "typeIdentifier": "t_string_memory_ptr",
                                                                          "typeString": "string memory"
                                                                        }
                                                                      },
                                                                      "functionReturnParameters": 7024,
                                                                      "id": 7183,
                                                                      "nodeType": "Return",
                                                                      "src": "13127:32:21"
                                                                    }
                                                                  ]
                                                                }
                                                              },
                                                              "id": 7326,
                                                              "nodeType": "IfStatement",
                                                              "src": "12981:2355:21",
                                                              "trueBody": {
                                                                "id": 7178,
                                                                "nodeType": "Block",
                                                                "src": "13011:35:21",
                                                                "statements": [
                                                                  {
                                                                    "expression": {
                                                                      "id": 7176,
                                                                      "name": "permissionCredentialIssue",
                                                                      "nodeType": "Identifier",
                                                                      "overloadedDeclarations": [],
                                                                      "referencedDeclaration": 7026,
                                                                      "src": "13019:25:21",
                                                                      "typeDescriptions": {
                                                                        "typeIdentifier": "t_string_memory_ptr",
                                                                        "typeString": "string memory"
                                                                      }
                                                                    },
                                                                    "functionReturnParameters": 7024,
                                                                    "id": 7177,
                                                                    "nodeType": "Return",
                                                                    "src": "13012:32:21"
                                                                  }
                                                                ]
                                                              }
                                                            },
                                                            "id": 7327,
                                                            "nodeType": "IfStatement",
                                                            "src": "12859:2477:21",
                                                            "trueBody": {
                                                              "id": 7172,
                                                              "nodeType": "Block",
                                                              "src": "12889:35:21",
                                                              "statements": [
                                                                {
                                                                  "expression": {
                                                                    "id": 7170,
                                                                    "name": "permissionCredentialIssue",
                                                                    "nodeType": "Identifier",
                                                                    "overloadedDeclarations": [],
                                                                    "referencedDeclaration": 7026,
                                                                    "src": "12897:25:21",
                                                                    "typeDescriptions": {
                                                                      "typeIdentifier": "t_string_memory_ptr",
                                                                      "typeString": "string memory"
                                                                    }
                                                                  },
                                                                  "functionReturnParameters": 7024,
                                                                  "id": 7171,
                                                                  "nodeType": "Return",
                                                                  "src": "12890:32:21"
                                                                }
                                                              ]
                                                            }
                                                          },
                                                          "id": 7328,
                                                          "nodeType": "IfStatement",
                                                          "src": "12737:2599:21",
                                                          "trueBody": {
                                                            "id": 7166,
                                                            "nodeType": "Block",
                                                            "src": "12767:35:21",
                                                            "statements": [
                                                              {
                                                                "expression": {
                                                                  "id": 7164,
                                                                  "name": "permissionCredentialIssue",
                                                                  "nodeType": "Identifier",
                                                                  "overloadedDeclarations": [],
                                                                  "referencedDeclaration": 7026,
                                                                  "src": "12775:25:21",
                                                                  "typeDescriptions": {
                                                                    "typeIdentifier": "t_string_memory_ptr",
                                                                    "typeString": "string memory"
                                                                  }
                                                                },
                                                                "functionReturnParameters": 7024,
                                                                "id": 7165,
                                                                "nodeType": "Return",
                                                                "src": "12768:32:21"
                                                              }
                                                            ]
                                                          }
                                                        },
                                                        "id": 7329,
                                                        "nodeType": "IfStatement",
                                                        "src": "12617:2719:21",
                                                        "trueBody": {
                                                          "id": 7160,
                                                          "nodeType": "Block",
                                                          "src": "12647:35:21",
                                                          "statements": [
                                                            {
                                                              "expression": {
                                                                "id": 7158,
                                                                "name": "permissionCredentialIssue",
                                                                "nodeType": "Identifier",
                                                                "overloadedDeclarations": [],
                                                                "referencedDeclaration": 7026,
                                                                "src": "12655:25:21",
                                                                "typeDescriptions": {
                                                                  "typeIdentifier": "t_string_memory_ptr",
                                                                  "typeString": "string memory"
                                                                }
                                                              },
                                                              "functionReturnParameters": 7024,
                                                              "id": 7159,
                                                              "nodeType": "Return",
                                                              "src": "12648:32:21"
                                                            }
                                                          ]
                                                        }
                                                      },
                                                      "id": 7330,
                                                      "nodeType": "IfStatement",
                                                      "src": "12497:2839:21",
                                                      "trueBody": {
                                                        "id": 7154,
                                                        "nodeType": "Block",
                                                        "src": "12527:35:21",
                                                        "statements": [
                                                          {
                                                            "expression": {
                                                              "id": 7152,
                                                              "name": "permissionCredentialIssue",
                                                              "nodeType": "Identifier",
                                                              "overloadedDeclarations": [],
                                                              "referencedDeclaration": 7026,
                                                              "src": "12535:25:21",
                                                              "typeDescriptions": {
                                                                "typeIdentifier": "t_string_memory_ptr",
                                                                "typeString": "string memory"
                                                              }
                                                            },
                                                            "functionReturnParameters": 7024,
                                                            "id": 7153,
                                                            "nodeType": "Return",
                                                            "src": "12528:32:21"
                                                          }
                                                        ]
                                                      }
                                                    },
                                                    "id": 7331,
                                                    "nodeType": "IfStatement",
                                                    "src": "12391:2945:21",
                                                    "trueBody": {
                                                      "id": 7148,
                                                      "nodeType": "Block",
                                                      "src": "12421:35:21",
                                                      "statements": [
                                                        {
                                                          "expression": {
                                                            "id": 7146,
                                                            "name": "permissionCredentialIssue",
                                                            "nodeType": "Identifier",
                                                            "overloadedDeclarations": [],
                                                            "referencedDeclaration": 7026,
                                                            "src": "12429:25:21",
                                                            "typeDescriptions": {
                                                              "typeIdentifier": "t_string_memory_ptr",
                                                              "typeString": "string memory"
                                                            }
                                                          },
                                                          "functionReturnParameters": 7024,
                                                          "id": 7147,
                                                          "nodeType": "Return",
                                                          "src": "12422:32:21"
                                                        }
                                                      ]
                                                    }
                                                  },
                                                  "id": 7332,
                                                  "nodeType": "IfStatement",
                                                  "src": "12274:3062:21",
                                                  "trueBody": {
                                                    "id": 7142,
                                                    "nodeType": "Block",
                                                    "src": "12304:43:21",
                                                    "statements": [
                                                      {
                                                        "expression": {
                                                          "id": 7140,
                                                          "name": "permissionCredentialIdentityIssue",
                                                          "nodeType": "Identifier",
                                                          "overloadedDeclarations": [],
                                                          "referencedDeclaration": 7030,
                                                          "src": "12312:33:21",
                                                          "typeDescriptions": {
                                                            "typeIdentifier": "t_string_memory_ptr",
                                                            "typeString": "string memory"
                                                          }
                                                        },
                                                        "functionReturnParameters": 7024,
                                                        "id": 7141,
                                                        "nodeType": "Return",
                                                        "src": "12305:40:21"
                                                      }
                                                    ]
                                                  }
                                                },
                                                "id": 7333,
                                                "nodeType": "IfStatement",
                                                "src": "12158:3178:21",
                                                "trueBody": {
                                                  "id": 7136,
                                                  "nodeType": "Block",
                                                  "src": "12188:35:21",
                                                  "statements": [
                                                    {
                                                      "expression": {
                                                        "id": 7134,
                                                        "name": "permissionCredentialIssue",
                                                        "nodeType": "Identifier",
                                                        "overloadedDeclarations": [],
                                                        "referencedDeclaration": 7026,
                                                        "src": "12196:25:21",
                                                        "typeDescriptions": {
                                                          "typeIdentifier": "t_string_memory_ptr",
                                                          "typeString": "string memory"
                                                        }
                                                      },
                                                      "functionReturnParameters": 7024,
                                                      "id": 7135,
                                                      "nodeType": "Return",
                                                      "src": "12189:32:21"
                                                    }
                                                  ]
                                                }
                                              },
                                              "id": 7334,
                                              "nodeType": "IfStatement",
                                              "src": "12045:3291:21",
                                              "trueBody": {
                                                "id": 7130,
                                                "nodeType": "Block",
                                                "src": "12075:35:21",
                                                "statements": [
                                                  {
                                                    "expression": {
                                                      "id": 7128,
                                                      "name": "permissionCredentialIssue",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 7026,
                                                      "src": "12083:25:21",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_string_memory_ptr",
                                                        "typeString": "string memory"
                                                      }
                                                    },
                                                    "functionReturnParameters": 7024,
                                                    "id": 7129,
                                                    "nodeType": "Return",
                                                    "src": "12076:32:21"
                                                  }
                                                ]
                                              }
                                            },
                                            "id": 7335,
                                            "nodeType": "IfStatement",
                                            "src": "11932:3404:21",
                                            "trueBody": {
                                              "id": 7124,
                                              "nodeType": "Block",
                                              "src": "11962:35:21",
                                              "statements": [
                                                {
                                                  "expression": {
                                                    "id": 7122,
                                                    "name": "permissionCredentialIssue",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 7026,
                                                    "src": "11970:25:21",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_string_memory_ptr",
                                                      "typeString": "string memory"
                                                    }
                                                  },
                                                  "functionReturnParameters": 7024,
                                                  "id": 7123,
                                                  "nodeType": "Return",
                                                  "src": "11963:32:21"
                                                }
                                              ]
                                            }
                                          },
                                          "id": 7336,
                                          "nodeType": "IfStatement",
                                          "src": "11821:3515:21",
                                          "trueBody": {
                                            "id": 7118,
                                            "nodeType": "Block",
                                            "src": "11851:35:21",
                                            "statements": [
                                              {
                                                "expression": {
                                                  "id": 7116,
                                                  "name": "permissionCredentialIssue",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 7026,
                                                  "src": "11859:25:21",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_string_memory_ptr",
                                                    "typeString": "string memory"
                                                  }
                                                },
                                                "functionReturnParameters": 7024,
                                                "id": 7117,
                                                "nodeType": "Return",
                                                "src": "11852:32:21"
                                              }
                                            ]
                                          }
                                        },
                                        "id": 7337,
                                        "nodeType": "IfStatement",
                                        "src": "11710:3626:21",
                                        "trueBody": {
                                          "id": 7112,
                                          "nodeType": "Block",
                                          "src": "11740:35:21",
                                          "statements": [
                                            {
                                              "expression": {
                                                "id": 7110,
                                                "name": "permissionCredentialIssue",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 7026,
                                                "src": "11748:25:21",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_string_memory_ptr",
                                                  "typeString": "string memory"
                                                }
                                              },
                                              "functionReturnParameters": 7024,
                                              "id": 7111,
                                              "nodeType": "Return",
                                              "src": "11741:32:21"
                                            }
                                          ]
                                        }
                                      },
                                      "id": 7338,
                                      "nodeType": "IfStatement",
                                      "src": "11599:3737:21",
                                      "trueBody": {
                                        "id": 7106,
                                        "nodeType": "Block",
                                        "src": "11629:35:21",
                                        "statements": [
                                          {
                                            "expression": {
                                              "id": 7104,
                                              "name": "permissionCredentialIssue",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7026,
                                              "src": "11637:25:21",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_string_memory_ptr",
                                                "typeString": "string memory"
                                              }
                                            },
                                            "functionReturnParameters": 7024,
                                            "id": 7105,
                                            "nodeType": "Return",
                                            "src": "11630:32:21"
                                          }
                                        ]
                                      }
                                    },
                                    "id": 7339,
                                    "nodeType": "IfStatement",
                                    "src": "11488:3848:21",
                                    "trueBody": {
                                      "id": 7100,
                                      "nodeType": "Block",
                                      "src": "11518:35:21",
                                      "statements": [
                                        {
                                          "expression": {
                                            "id": 7098,
                                            "name": "permissionCredentialIssue",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7026,
                                            "src": "11526:25:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_string_memory_ptr",
                                              "typeString": "string memory"
                                            }
                                          },
                                          "functionReturnParameters": 7024,
                                          "id": 7099,
                                          "nodeType": "Return",
                                          "src": "11519:32:21"
                                        }
                                      ]
                                    }
                                  },
                                  "id": 7340,
                                  "nodeType": "IfStatement",
                                  "src": "11391:3945:21",
                                  "trueBody": {
                                    "id": 7094,
                                    "nodeType": "Block",
                                    "src": "11421:35:21",
                                    "statements": [
                                      {
                                        "expression": {
                                          "id": 7092,
                                          "name": "permissionCredentialIssue",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7026,
                                          "src": "11429:25:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        },
                                        "functionReturnParameters": 7024,
                                        "id": 7093,
                                        "nodeType": "Return",
                                        "src": "11422:32:21"
                                      }
                                    ]
                                  }
                                },
                                "id": 7341,
                                "nodeType": "IfStatement",
                                "src": "11283:4053:21",
                                "trueBody": {
                                  "id": 7088,
                                  "nodeType": "Block",
                                  "src": "11313:35:21",
                                  "statements": [
                                    {
                                      "expression": {
                                        "id": 7086,
                                        "name": "permissionCredentialIssue",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7026,
                                        "src": "11321:25:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_string_memory_ptr",
                                          "typeString": "string memory"
                                        }
                                      },
                                      "functionReturnParameters": 7024,
                                      "id": 7087,
                                      "nodeType": "Return",
                                      "src": "11314:32:21"
                                    }
                                  ]
                                }
                              },
                              "id": 7342,
                              "nodeType": "IfStatement",
                              "src": "11175:4161:21",
                              "trueBody": {
                                "id": 7082,
                                "nodeType": "Block",
                                "src": "11205:35:21",
                                "statements": [
                                  {
                                    "expression": {
                                      "id": 7080,
                                      "name": "permissionCredentialIssue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7026,
                                      "src": "11213:25:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    },
                                    "functionReturnParameters": 7024,
                                    "id": 7081,
                                    "nodeType": "Return",
                                    "src": "11206:32:21"
                                  }
                                ]
                              }
                            },
                            "id": 7343,
                            "nodeType": "IfStatement",
                            "src": "11071:4265:21",
                            "trueBody": {
                              "id": 7076,
                              "nodeType": "Block",
                              "src": "11101:35:21",
                              "statements": [
                                {
                                  "expression": {
                                    "id": 7074,
                                    "name": "permissionCredentialIssue",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7026,
                                    "src": "11109:25:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_string_memory_ptr",
                                      "typeString": "string memory"
                                    }
                                  },
                                  "functionReturnParameters": 7024,
                                  "id": 7075,
                                  "nodeType": "Return",
                                  "src": "11102:32:21"
                                }
                              ]
                            }
                          },
                          "id": 7344,
                          "nodeType": "IfStatement",
                          "src": "10971:4365:21",
                          "trueBody": {
                            "id": 7070,
                            "nodeType": "Block",
                            "src": "11001:35:21",
                            "statements": [
                              {
                                "expression": {
                                  "id": 7068,
                                  "name": "permissionCredentialIssue",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7026,
                                  "src": "11009:25:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                },
                                "functionReturnParameters": 7024,
                                "id": 7069,
                                "nodeType": "Return",
                                "src": "11002:32:21"
                              }
                            ]
                          }
                        },
                        "id": 7345,
                        "nodeType": "IfStatement",
                        "src": "10875:4461:21",
                        "trueBody": {
                          "id": 7064,
                          "nodeType": "Block",
                          "src": "10905:35:21",
                          "statements": [
                            {
                              "expression": {
                                "id": 7062,
                                "name": "permissionCredentialIssue",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7026,
                                "src": "10913:25:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_string_memory_ptr",
                                  "typeString": "string memory"
                                }
                              },
                              "functionReturnParameters": 7024,
                              "id": 7063,
                              "nodeType": "Return",
                              "src": "10906:32:21"
                            }
                          ]
                        }
                      },
                      "id": 7346,
                      "nodeType": "IfStatement",
                      "src": "10770:4566:21",
                      "trueBody": {
                        "id": 7058,
                        "nodeType": "Block",
                        "src": "10800:35:21",
                        "statements": [
                          {
                            "expression": {
                              "id": 7056,
                              "name": "permissionCredentialIssue",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7026,
                              "src": "10808:25:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_string_memory_ptr",
                                "typeString": "string memory"
                              }
                            },
                            "functionReturnParameters": 7024,
                            "id": 7057,
                            "nodeType": "Return",
                            "src": "10801:32:21"
                          }
                        ]
                      }
                    },
                    "id": 7347,
                    "nodeType": "IfStatement",
                    "src": "10665:4671:21",
                    "trueBody": {
                      "id": 7052,
                      "nodeType": "Block",
                      "src": "10695:35:21",
                      "statements": [
                        {
                          "expression": {
                            "id": 7050,
                            "name": "permissionCredentialIssue",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7026,
                            "src": "10703:25:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          "functionReturnParameters": 7024,
                          "id": 7051,
                          "nodeType": "Return",
                          "src": "10696:32:21"
                        }
                      ]
                    }
                  },
                  "id": 7348,
                  "nodeType": "IfStatement",
                  "src": "10564:4772:21",
                  "trueBody": {
                    "id": 7046,
                    "nodeType": "Block",
                    "src": "10594:35:21",
                    "statements": [
                      {
                        "expression": {
                          "id": 7044,
                          "name": "permissionCredentialIssue",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7026,
                          "src": "10602:25:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "functionReturnParameters": 7024,
                        "id": 7045,
                        "nodeType": "Return",
                        "src": "10595:32:21"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "id": 7349,
                    "name": "fallbackPermission",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7038,
                    "src": "15382:18:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_memory_ptr",
                      "typeString": "string memory"
                    }
                  },
                  "functionReturnParameters": 7024,
                  "id": 7350,
                  "nodeType": "Return",
                  "src": "15375:25:21"
                }
              ]
            },
            "id": 7352,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPermissionOfCredentialTypeHash",
            "nameLocation": "10150:33:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7021,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7020,
                  "mutability": "mutable",
                  "name": "credentialType",
                  "nameLocation": "10191:14:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 7352,
                  "src": "10184:21:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes2",
                    "typeString": "bytes2"
                  },
                  "typeName": {
                    "id": 7019,
                    "name": "bytes2",
                    "nodeType": "ElementaryTypeName",
                    "src": "10184:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes2",
                      "typeString": "bytes2"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10183:23:21"
            },
            "returnParameters": {
              "id": 7024,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7023,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7352,
                  "src": "10229:13:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7022,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "10229:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "10228:15:21"
            },
            "scope": 7414,
            "src": "10141:5266:21",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 7385,
              "nodeType": "Block",
              "src": "15519:580:21",
              "statements": [
                {
                  "condition": {
                    "arguments": [
                      {
                        "id": 7360,
                        "name": "permission",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7354,
                        "src": "15541:10:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        }
                      },
                      {
                        "hexValue": "63726564656e7469616c3a6973737565",
                        "id": 7361,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15553:18:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_92501a8193698a203fd4c821c07967fcb6ac282aecf7d27b6d77f5523ea52b11",
                          "typeString": "literal_string \"credential:issue\""
                        },
                        "value": "credential:issue"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_string_memory_ptr",
                          "typeString": "string memory"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_92501a8193698a203fd4c821c07967fcb6ac282aecf7d27b6d77f5523ea52b11",
                          "typeString": "literal_string \"credential:issue\""
                        }
                      ],
                      "id": 7359,
                      "name": "isEqual",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7413,
                      "src": "15533:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bool_$",
                        "typeString": "function (string memory,string memory) pure returns (bool)"
                      }
                    },
                    "id": 7362,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15533:39:21",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "arguments": [
                        {
                          "id": 7367,
                          "name": "permission",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7354,
                          "src": "15692:10:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        {
                          "hexValue": "63726564656e7469616c3a6964656e746974796973737565",
                          "id": 7368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "15704:26:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_bd5b718d109609cd0e1bc5a1ebd9b8e3f745523317c19c3d615d0ac4faf79929",
                            "typeString": "literal_string \"credential:identityissue\""
                          },
                          "value": "credential:identityissue"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          },
                          {
                            "typeIdentifier": "t_stringliteral_bd5b718d109609cd0e1bc5a1ebd9b8e3f745523317c19c3d615d0ac4faf79929",
                            "typeString": "literal_string \"credential:identityissue\""
                          }
                        ],
                        "id": 7366,
                        "name": "isEqual",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7413,
                        "src": "15684:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bool_$",
                          "typeString": "function (string memory,string memory) pure returns (bool)"
                        }
                      },
                      "id": 7369,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "15684:47:21",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": {
                      "condition": {
                        "arguments": [
                          {
                            "id": 7374,
                            "name": "permission",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7354,
                            "src": "15859:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            }
                          },
                          {
                            "hexValue": "63726564656e7469616c3a636f6e746163746973737565",
                            "id": 7375,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15871:25:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2cda59a8aca75a60b5d3541eef838fc5b2071cb6020442cfef1f46586531dcac",
                              "typeString": "literal_string \"credential:contactissue\""
                            },
                            "value": "credential:contactissue"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_string_memory_ptr",
                              "typeString": "string memory"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_2cda59a8aca75a60b5d3541eef838fc5b2071cb6020442cfef1f46586531dcac",
                              "typeString": "literal_string \"credential:contactissue\""
                            }
                          ],
                          "id": 7373,
                          "name": "isEqual",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7413,
                          "src": "15851:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_string_memory_ptr_$_t_string_memory_ptr_$returns$_t_bool_$",
                            "typeString": "function (string memory,string memory) pure returns (bool)"
                          }
                        },
                        "id": 7376,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15851:46:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 7380,
                      "nodeType": "IfStatement",
                      "src": "15847:159:21",
                      "trueBody": {
                        "id": 7379,
                        "nodeType": "Block",
                        "src": "15899:107:21",
                        "statements": [
                          {
                            "expression": {
                              "hexValue": "5065726d697373696f6e733a207072696d617279206f66206f70657261746f72206c61636b732063726564656e7469616c3a636f6e746163746973737565207065726d697373696f6e",
                              "id": 7377,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15920:75:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_ee672481e710e94f96f5a06f5b9d52ef2f6d544991423404ddc9c76da66a9811",
                                "typeString": "literal_string \"Permissions: primary of operator lacks credential:contactissue permission\""
                              },
                              "value": "Permissions: primary of operator lacks credential:contactissue permission"
                            },
                            "functionReturnParameters": 7358,
                            "id": 7378,
                            "nodeType": "Return",
                            "src": "15913:82:21"
                          }
                        ]
                      }
                    },
                    "id": 7381,
                    "nodeType": "IfStatement",
                    "src": "15680:326:21",
                    "trueBody": {
                      "id": 7372,
                      "nodeType": "Block",
                      "src": "15733:108:21",
                      "statements": [
                        {
                          "expression": {
                            "hexValue": "5065726d697373696f6e733a207072696d617279206f66206f70657261746f72206c61636b732063726564656e7469616c3a6964656e746974796973737565207065726d697373696f6e",
                            "id": 7370,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15754:76:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7359d170439d62ae8084e8cbe94a32ade58a5d7839e9106649482e4625c36ef5",
                              "typeString": "literal_string \"Permissions: primary of operator lacks credential:identityissue permission\""
                            },
                            "value": "Permissions: primary of operator lacks credential:identityissue permission"
                          },
                          "functionReturnParameters": 7358,
                          "id": 7371,
                          "nodeType": "Return",
                          "src": "15747:83:21"
                        }
                      ]
                    }
                  },
                  "id": 7382,
                  "nodeType": "IfStatement",
                  "src": "15529:477:21",
                  "trueBody": {
                    "id": 7365,
                    "nodeType": "Block",
                    "src": "15574:100:21",
                    "statements": [
                      {
                        "expression": {
                          "hexValue": "5065726d697373696f6e733a207072696d617279206f66206f70657261746f72206c61636b732063726564656e7469616c3a6973737565207065726d697373696f6e",
                          "id": 7363,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "string",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "15595:68:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_stringliteral_e0ab4f31ce89587794b513a46af654d7575ffd4d632ee545369ac3421a0c5e80",
                            "typeString": "literal_string \"Permissions: primary of operator lacks credential:issue permission\""
                          },
                          "value": "Permissions: primary of operator lacks credential:issue permission"
                        },
                        "functionReturnParameters": 7358,
                        "id": 7364,
                        "nodeType": "Return",
                        "src": "15588:75:21"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "hexValue": "5065726d697373696f6e733a207072696d617279206f66206f70657261746f72206c61636b73207065726d697373696f6e20666f722063726564656e7469616c54797065",
                    "id": 7383,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "16022:70:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_4267958f4db0da514ca6c443e402408138ff4d7816e79139c9041225830edacf",
                      "typeString": "literal_string \"Permissions: primary of operator lacks permission for credentialType\""
                    },
                    "value": "Permissions: primary of operator lacks permission for credentialType"
                  },
                  "functionReturnParameters": 7358,
                  "id": 7384,
                  "nodeType": "Return",
                  "src": "16015:77:21"
                }
              ]
            },
            "id": 7386,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "buildCheckOperatorPermissionError",
            "nameLocation": "15422:33:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7355,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7354,
                  "mutability": "mutable",
                  "name": "permission",
                  "nameLocation": "15470:10:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 7386,
                  "src": "15456:24:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7353,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "15456:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15455:26:21"
            },
            "returnParameters": {
              "id": 7358,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7357,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7386,
                  "src": "15504:13:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7356,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "15504:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "15503:15:21"
            },
            "scope": 7414,
            "src": "15413:686:21",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 7412,
              "nodeType": "Block",
              "src": "16183:94:21",
              "statements": [
                {
                  "expression": {
                    "components": [
                      {
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 7409,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "components": [
                                    {
                                      "id": 7398,
                                      "name": "a",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7388,
                                      "src": "16229:1:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    }
                                  ],
                                  "id": 7399,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "16228:3:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 7396,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967295,
                                  "src": "16211:3:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 7397,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "16211:16:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 7400,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16211:21:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 7395,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967288,
                            "src": "16201:9:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 7401,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16201:32:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "arguments": [
                            {
                              "arguments": [
                                {
                                  "components": [
                                    {
                                      "id": 7405,
                                      "name": "b",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7390,
                                      "src": "16265:1:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_string_memory_ptr",
                                        "typeString": "string memory"
                                      }
                                    }
                                  ],
                                  "id": 7406,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "16264:3:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_string_memory_ptr",
                                    "typeString": "string memory"
                                  }
                                ],
                                "expression": {
                                  "id": 7403,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4294967295,
                                  "src": "16247:3:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 7404,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encodePacked",
                                "nodeType": "MemberAccess",
                                "src": "16247:16:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 7407,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16247:21:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 7402,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4294967288,
                            "src": "16237:9:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 7408,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16237:32:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "16201:68:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 7410,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "16200:70:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 7394,
                  "id": 7411,
                  "nodeType": "Return",
                  "src": "16193:77:21"
                }
              ]
            },
            "functionSelector": "465c4105",
            "id": 7413,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isEqual",
            "nameLocation": "16114:7:21",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 7391,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7388,
                  "mutability": "mutable",
                  "name": "a",
                  "nameLocation": "16136:1:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 7413,
                  "src": "16122:15:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7387,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "16122:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7390,
                  "mutability": "mutable",
                  "name": "b",
                  "nameLocation": "16153:1:21",
                  "nodeType": "VariableDeclaration",
                  "scope": 7413,
                  "src": "16139:15:21",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 7389,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "16139:6:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16121:34:21"
            },
            "returnParameters": {
              "id": 7394,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7393,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 7413,
                  "src": "16177:4:21",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7392,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "16177:4:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "16176:6:21"
            },
            "scope": 7414,
            "src": "16105:172:21",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 7415,
        "src": "387:15892:21",
        "usedErrors": []
      }
    ],
    "src": "0:16280:21"
  },
  "compiler": {
    "name": "solc",
    "version": "0.8.4+commit.c7e474f2.Emscripten.clang"
  },
  "networks": {
    "1480": {
      "events": {},
      "links": {},
      "address": "0x800B4740470C85035015a7B38DedB0f4bB82c985",
      "transactionHash": "0x562d51116fa7c765446f91512b47efa56a9df61c620100f2a1c102c3e29b5720"
    },
    "1481": {
      "events": {},
      "links": {},
      "address": "0x1550b4f24368c8Eb839073ac04673777D9dda60A",
      "transactionHash": "0xdefe50d72c83d72796d13b7979dfe242c0c4c4a6e0de59c16b1fef4a0c4c5075"
    },
    "1482": {
      "events": {},
      "links": {},
      "address": "0xE3AA014F2c6796ca9Da615893433D933A6A2D1c9",
      "transactionHash": "0xc691782ac0dd51296a7184b04ec03579fd4e8e2c3253b9e8ce24b5a8b232a1c8"
    },
    "1483": {
      "events": {},
      "links": {},
      "address": "0x6a1d5677cBc9C6683ab420025889580d56A2efCd",
      "transactionHash": "0x7c2c6107b3c100c95f3e5dede9593dbc951a703398557ee52aadaa542242c1e4"
    }
  },
  "schemaVersion": "3.4.16",
  "updatedAt": "2024-07-15T16:13:01.821Z",
  "devdoc": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}